猫鼬自增混乱
Mongoose autoincrement confusion
我是 Mongoose 的新手,所以考虑到这一点...
我正在尝试更新文档中的数据但没有成功。
下面的代码按我的预期识别文档并按预期更改模型。但是,更新后的模型没有保存到 MongoDB,我无法解释为什么......
(也许我应该使用 findOneAndUpdate 指令,但像这样零碎地工作更容易理解。)
UserModel.findOne({memberID: req.params.memberID}, function(err, foundObject) {
if(err) {
console.log('ERROR PUT:/updateUser -> ' + err);
res.status(500).send();
} else {
if(!foundObject) {
console.log('ERROR - PUT:/updateUser, No such record -> ' + req.params.memberID);
res.status(500).send();
} else {
console.log("1 :" + foundObject.info.fName);
if(req.body.fName)
foundObject.info.fName = req.body.fName;
console.log("2 :" + foundObject.info.fName);
foundObject.update(function(err, updatedObject) {
if(err) {
console.log('ERROR - PUT:/updateUser, SAVE FAIL -> ' + err);
res.status(500).send();
} else {
res.status(200).send(updatedObject);
}
});
}
}
});
Postman 的输出(我用来测试的)是
{
"ok": 1,
"nModified": 0,
"n": 1
}
数据库上的直接控制台查询显示没有变化。
可以试试这个。
UserModel.findOneAndUpdate({memberID: req.params.memberID}, {$set: {"info.fName" : req.body.fName}}, {new: true})
.exec(function (error, updatedUser) {
if (error) {
return res.status(400).send({msg: 'Update failed'});
}
return res.status(200).send(updatedUser);
});
N.B:确保req.params.memberID和req.body.fName得到正确
我是 Mongoose 的新手,所以考虑到这一点...
我正在尝试更新文档中的数据但没有成功。 下面的代码按我的预期识别文档并按预期更改模型。但是,更新后的模型没有保存到 MongoDB,我无法解释为什么...... (也许我应该使用 findOneAndUpdate 指令,但像这样零碎地工作更容易理解。)
UserModel.findOne({memberID: req.params.memberID}, function(err, foundObject) {
if(err) {
console.log('ERROR PUT:/updateUser -> ' + err);
res.status(500).send();
} else {
if(!foundObject) {
console.log('ERROR - PUT:/updateUser, No such record -> ' + req.params.memberID);
res.status(500).send();
} else {
console.log("1 :" + foundObject.info.fName);
if(req.body.fName)
foundObject.info.fName = req.body.fName;
console.log("2 :" + foundObject.info.fName);
foundObject.update(function(err, updatedObject) {
if(err) {
console.log('ERROR - PUT:/updateUser, SAVE FAIL -> ' + err);
res.status(500).send();
} else {
res.status(200).send(updatedObject);
}
});
}
}
});
Postman 的输出(我用来测试的)是 { "ok": 1, "nModified": 0, "n": 1 } 数据库上的直接控制台查询显示没有变化。
可以试试这个。
UserModel.findOneAndUpdate({memberID: req.params.memberID}, {$set: {"info.fName" : req.body.fName}}, {new: true})
.exec(function (error, updatedUser) {
if (error) {
return res.status(400).send({msg: 'Update failed'});
}
return res.status(200).send(updatedUser);
});
N.B:确保req.params.memberID和req.body.fName得到正确