Mongoose Schema.update不更新布尔值

我已经尝试更新其他领域,它工作得很好。

我在我的API中使用的命令:

User.update({ email: targetUser.email }, { $set: { isAdmin: true }, $push: { 'log.updated': new Date() } }, function (err, user) { if (err) { responseObject.err = err; responseObject.data = null; responseObject.code = 422; return res.json(responseObject); } return res.json(responseObject); }); 

为了澄清,当我尝试运行这个,API返回代码200,这意味着一切工作正常,但是当我检查数据库的isAdmin值没有改变。

任何build议将是有益的,在这里用尽想法!

用户架构按要求:

 var UserSchema = new Schema({ name: { type: String, default: "", index: 'text' }, email: { type: String, lowercase: true }, role: { type: String, default: "" }, meta: { skills: { type: Array, default: [], index: 'text' }, about: { type: String, default: "", index: 'text' }, education: { type: Array, default: [], index: 'text' }, location: { address: { a: { type: String, default: "" }, p: { type: String, default: "" }, c: { type: String, default: "" } }, geo: { lat: { type: Number, default: 0 }, lng: { type: Number, default: 0 } } } }, compMeta: { departments: { type: Array, default: [], index: 'text' }, employees: [ { emId: Number, empName: String, empDep: String // Dunno if i should use Dep name or Dep ID gonna look in to that later } ], } , settings: { search: { distance: { n: { type: Number, default: 100 }, t: { type: String, default: "km" } } } }, created: { type: Date, default: Date.now }, //Rating is an array of objects that consist of rateing 0-100 , job database id , comments from the Company rating: [ { rate: Number, jobId: Number, jobComments: String } ], /*rating: { userTotalRating: {type: Number, default: 0}, ratingCounter : {type: Number, default: 0} }*/ sensitive: { cpr_cvr: String, }, stripe: { type: String }, facebook: {}, linkedin: {}, log: { updated: { type: Array, default: [] } }, hashedPassword: String, provider: { type: String, default: 'local' }, salt: String }); 

更新:

Mongodb版本:3.0.7

尝试使用$ set更新两个字段

 User.update({ email: targetUser.email }, { $set: { isAdmin: true, 'log.updated': new Date() } }, function (err, user) { if (err) { responseObject.err = err; responseObject.data = null; responseObject.code = 422; return res.json(responseObject); } return res.json(responseObject); }); 

希望它是有效的。

原来,我忘了添加isAdmin字段到我的用户架构! 另外,我的电话是错误的,我这样做:

 User.update({ email: targetUser.email }, { $set: { isAdmin: true }}, { $push: { 'log.updated': new Date() } }, function (err, user) { if (err) { responseObject.err = err; responseObject.data = null; responseObject.code = 422; return res.json(responseObject); } return res.json(responseObject); }); 

感谢所有努力帮助我的人! 🙂