【发布时间】:2020-08-15 13:05:38
【问题描述】:
我正在使用 MongoDB 和 Mongoose。我目前有一个 like 按钮,当我单击它时,我想增加文档中的“喜欢”字段。目前我的文档具有以下架构:
brote {
name:
content:
created:
likes:
}
并且我已经测试了我的查询中的 ID 是否与我的数据库中的对象的 ID 相匹配。
我咨询了How do I increment a Number value in Mongoose? 和Incrementing a value with mongoose?,但这些解决方案似乎没有对我的数据库进行任何更改。也许我缺少一些明显的东西?
Index.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 }});
})
【问题讨论】:
-
检查查询对象我认为应该是{_id: req.body._id}。我想知道你的模型中喜欢的数据类型
-
@QuajoDuke 我将 id 更改为 _id 并且它仍然没有更改字段:( 数据类型是 Number
-
您是否尝试过这样做 :: (stackoverflow.com/questions/6578178/…) ?我想这应该可以解决您的问题,如果不是,您的
Brote架构如何?还提供示例文档.. -
还尝试将 {new: true} 选项添加到 findOneAndUpdate。或者这样做:
const brote = Brote.findById(query); Brote.UpdateOne(query, {$set: {'likes': brote.likes + 1}})
标签: node.js mongodb express mongoose