我遇到的问题是文档中的对象无法更新。在我的Class
模型中,有{{1>}类型的情绪字段,如下所示:
Object
我在模型中实现sentiment: {
terrible: 0,
bad: 0,
okay: 0,
good: 0,
fantastic: 0
}
的方式如下:
sentiment
要更新属性,我正在传递一个包含实际情绪的字段sentiment: Object
的对象:
sentiment
我这样做:
{ sentiment: 'good' } // this is what req.body contains
但是当我检索类时,const classFound = await Class.findById(req.params.classId);
if (classFound) {
classFound.sentiment[req.body.sentiment] += 1;
await classFound.save();
}
对象保持不变。我不确定错误的位置,因为当我在sentiment
之后退出classFound
时,我会收到更新的情绪对象。
修改
save()
答案 0 :(得分:0)
试试这个
const update = (query, body) => {
return new Promise((resove, reject) => {
Class.update(query, body, (err, data) => {
if (err)
return reject(err);
return resove(data);
});
});
}
const classFound = await Class.findOne({
_id: req.params.classId
}).exec(); // exec returns promise
if (classFound) {
const sentiment = req.body.sentiment;
classFound.sentiment[sentiment] = classFound.sentiment[sentiment] ? classFound.sentiment[sentiment] + 1 : 1;
const query = {
_id: req.params.classId
};
const body = {
$set: {
sentiment: classFound.sentiment
}
};
await update(query, body);
}