我目前有一个Message架构,其中包含一个回复子文档:
message: String,
replies: [{
message: String,
userFrom: {
type: mongoose.Schema.Types.ObjectId,
ref: 'User'
}
}]
Run Code Online (Sandbox Code Playgroud)
我正在尝试发出一个POST请求,允许我查找一条消息以附加回复.我尝试过以下方法:
Message.findOneAndUpdate(req.params.id,{
replies: {
message: req.body.reply,
userFrom: req.user._id
}
}, function(err, data){
...
});
Run Code Online (Sandbox Code Playgroud)
发生的事情是我覆盖了当前在回复数组中的任何回复.我相信我需要使用$ push运算符,但我不太清楚如何.
是否可以在单个请求中使用findOneAndUpdate以及$ push?
你是在正确的方向.使用以下语法
query.findOneAndUpdate(id, update, callback) // executes
Run Code Online (Sandbox Code Playgroud)
您可以使用$push运算符进行更新,如下所示:
var reply = {
message: req.body.reply,
userFrom: req.user._id
};
Message.findOneAndUpdate(
req.params.id,
{ $push: { replies: reply } },
{ upsert: true }, // upsert looks to find a Message with that id and if it doesn't exist creates the Message
function(err, data) {
// Handle err
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5561 次 |
| 最近记录: |