【发布时间】:2020-06-25 02:50:14
【问题描述】:
是的,我知道还有非常相似的其他问题,我正在研究它们,但不幸的是,我找不到解决方案。所以,我正在尝试使用“findOneAndUpdate”方法更新猫鼬模型中的嵌套文档,但即使它返回一个文档,这个文档也是原始文档,而不是更新文档。
下面是模型:
var mongoose = require('mongoose');
var teamMemberModelSchema = new mongoose.Schema({
"_id": mongoose.SchemaTypes.ObjectId,
"email": {
"type": String,
"required": true,
"min": 5,
"max": 20
},
"name": {
"type": String,
"required": true,
"min": 5,
"max": 20
},
"role": {
"type": String,
"required": true,
"min": 20,
"max": 50
},
"twitter": {
"type": String,
"required": true,
"min": 20,
"max": 50
},
"facebook": {
"type": String,
"required": true,
"min": 20,
"max": 50
},
"linkedin": {
"type": String,
"required": true,
"min": 20,
"max": 50
},
});
var teamModelSchema = new mongoose.Schema({
"title": {
"type": String,
"required": true,
"min": 5,
"max": 20
},
"headline": {
"type": String,
"required": true,
"min": 5,
"max": 30
},
"description": {
"type": String,
"required": true,
"min": 5,
"max": 80
},
"members": [teamMemberModelSchema]
}, { collection: 'team' });
teamModelSchema.set('collection', 'team');
mongoose.model('team', teamModelSchema);
我想使用以下代码 sn-p 更新成员嵌套文档:
module.exports.teamMemberUpdate = function (req, res) {
var email = req.body.email;
var name = req.body.name;
var role = req.body.role;
var twitter = req.body.twitter;
var facebook = req.body.facebook;
var linkedin = req.body.linkedin;
teamFunctions.findTeamMember(email)
.then(data => {
if (data.length === 0) {
responseUtilities.sendJSON(res, false, { "message": teamMsg.teamMemberNotFound });
}
else {
return data[0];
}
})
.then(() => {
const query = { "members.email": email };
const options = { new: true };
var update = {
$set: {
email: email,
name: name,
role: role,
twitter: twitter,
facebook: facebook,
linkedin: linkedin
}
};
TeamModel.findOneAndUpdate(query, update, options, function (err, result) {
var message = teamMsg.teamMemberUpdatedSuccess;
if (!result) {
message = teamMsg.teamMemberUpdatedError;
}
responseUtilities.sendJSON(res, err, { "message": message });
});
})
.catch(err => {
console.log(err.message);
responseUtilities.sendJSON(res, err, { "message": err.message });
});
}
显示“teamMemberUpdatedSuccess”值,但实际上并没有更新原文档。
谁能找出问题出在哪里?
【问题讨论】:
标签: javascript node.js mongodb mongoose