我正在开展类似QA的项目。
我的问题的当前模型如下:
var questionSchema = new mongoose.Schema({
content: String,
answers: [{
content:String,
.
.
.
votes: [{
type: mongoose.Schema.ObjectId,
ref: 'User'
}]
}]
});
由于每个用户每个问题有权获得超过1个投票权,因此我尝试$pull
Model#update
使用 Event.update({_id: req.params.id}, {$pull: {'answers.votes': req.user.id}}).execAsync()
.catch(err => {
handleError(res, err);
}).then(num => {
if(num === 0) { return res.send(404).end(); }
}).then(() => {exports.show(req,res);});
在事件中投票的所有投票。
以下是我的代码:
-abc1234567-abc.jpg
但是我收到了'不能使用部分(..)遍历元素'的错误。
我的查询/更新是否不正确?
答案 0 :(得分:0)
{$pull: {'answers.votes': req.user.id}}
不是使用$pull
的正确方法,而是使用{$pull: {answers:{votes: req.user.id}}}
。
请尝试以下代码: -
Event.update({_id: req.params.id}, {$pull: {answers:{votes: req.user.id}}}).execAsync()
.catch(err =>
{
handleError(res, err);
}).then(num =>
{
if(num === 0)
{ return res.send(404).end(); }
}).then(() => {exports.show(req,res);});
请参阅$pull-doc以了解如何使用它。
希望这会对你有所帮助。