Mongoose更新文档中的对象字段属性

时间:2018-02-21 06:24:55

标签: javascript node.js express mongoose

我遇到的问题是文档中的对象无法更新。在我的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()

1 个答案:

答案 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);
}