mongoose模式没有拿起新的属性

我有这个mongoose模式,我添加了updated_by和created_by,但由于某种原因,当我从客户端保存模型到服务器,这些字段不可见:

userSchema = mongoose.Schema({ role: { type: String, enum: ['Admin', 'Owner', 'User'] }, username: { type: String, unique: true, required: true, validate: [validation.usernameValidator, 'not a valid username'] }, passwordHash: { type: String, required: true, validate: [validation.passwordValidator, 'not a valid password'] }, email: { type: String, unique: true, required: true, validate: [validation.emailValidator, 'not a valid email address'] }, firstName: { type: String, required: false }, lastName: { type: String, required: false }, registered_at: { type: Date, default: Date.now }, created_by: { type: String, required: false }, updated_by: { type: String, required: false }, created_at: { type: Date, default: Date.now }, updated_at: { type: Date, default: Date.now } }, { autoIndex: false }); 

这通常是一个问题? 我是否需要用Mongoose或者MongoDB来重build一些东西,以便他们能够获得这个模型的新属性?

当然,我确实重启了mongoDB服务器,但是没有做任何事情。

在任何情况下,如果你保存你的用户模型,那么在保存模型或者在你的userSchema中设置一个默认值的字段时,MongoDB中显示的具有实际值的字段将是你自己设置的值。

所以,只是澄清一下:

  address: { type: String, default: ' ' } 

将在MongoDB中显示,值为“”,除非在保存用户模型时设置了特定的地址。

但,

  address: String 

不会显示在MongoDB中,除非在保存用户模型时设置了特定的地址。

编辑感谢马修指出,其实upsert行为确实如下:

如果upsert为true并且没有文档匹配查询条件,则update()将插入单个文档。