更改值时,我的模型似乎没有更新。我使用了markModified
方法,但它似乎不起作用。打开调试模式后(mongoose.set('debug', true)
)。我开始分析查询。我注意到您指定_id
的顺序至关重要。用户架构有一个嵌入的_id(我存储ObjectID和我的应用程序所需的自定义值)。
这是Mongoose正在生成但不起作用的查询:
db.getCollection('user')
.update(
{ _id: { special_id: 0, user_id: ObjectId("59e8a02ba9986866bad4aa50") }},
{ '$set': { password: 'test' }}
);
我改变了_id的顺序,然后它起作用了:
db.getCollection('user')
.update(
{ _id: { user_id: ObjectId('59e8a02ba9986866bad4aa50'), special_id: 0 }},
{ '$set': { password: 'test' }}
);
Mongoose架构如下所示(仅显示_id):
const User = new Schema({
_id: {
user_id: {
type: Schema.Types.ObjectId,
required: true,
},
xms_id: {
type: Number,
required: true,
},
},
});
这是我正在使用的Mongoose查询:
User.findOne({ reset_password_token: req.params.token })
.then((user) => {
if (!doc) {
return res.redirect('/');
}
user.password = req.body.password;
user.markModified('password');
user.save((err, updatedUser, numAffected) => {
if (err) {
return next(err);
}
console.log('updateduser', updatedUser); // Record with new password
console.log('numaffacted', numAffected); // 0 records are affected
});
})
.catch(err => next(err));
有谁知道如何解决这个问题?当我想使用User.save()
时,我似乎无法改变顺序。