Mongoose 不会增加数字字段

Fla*_*eil 1 mongoose mongodb node.js express

我正在使用 MongoDB 和猫鼬。我目前有一个like按钮,当我单击它时,我想增加文档中的“喜欢”字段。目前我的文档具有以下架构:

brote {
  name: 
  content:
  created: 
  likes: 
} 
Run Code Online (Sandbox Code Playgroud)

并且我已经测试过我的查询中的 ID 与我的数据库中的对象的 ID 相匹配。

我咨询了如何在 Mongoose 中增加 Number 值?并用猫鼬增加值?但这些解决方案似乎没有对我的数据库进行任何更改。也许有一些显而易见的东西我失踪了?

索引.js

mongoose.connect('mongodb://localhost:27017/bromies', { useUnifiedTopology: true, useNewUrlParser: true });
mongoose.set('useFindAndModify', false);
var Brote = mongoose.model('Brote', broteFormSchema);

app.post('/likes', (req, res) => {
    let query = { id: req.body._id};
    Brote.findOneAndUpdate(query, {$inc: { 'likes': 1 }});

  })
Run Code Online (Sandbox Code Playgroud)

Kas*_*kar 5

如果findOneAndUpdate没有回调,该方法似乎不起作用。尝试传递这样的回调:

    let query = { _id: req.body._id}; // It is _id, not id
    Brote.findOneAndUpdate(
        query, 
        {$inc:{ likes: 1}},
        (err, brote) => {    // callback
            console.log(brote);
        }
    )  
Run Code Online (Sandbox Code Playgroud)

编辑:
它不起作用的原因是因为如果没有将回调传递给它,它会返回一个查询。您可以调用.exec()返回的 Query 来执行它。

来自findOneAndUpdate()的文档:

查找匹配的文档,根据更新参数更新它,传递任何选项,并将找到的文档(如果有)返回给回调。如果传递了回调,则执行查询。