我的查询如下所示:
const updateLikes = (item_id, userInfo) => {
return new Promise((resolve, reject) => {
itemLike.findOneAndUpdate({ 'item_id': item_id }, { $inc: { no_of_likes: 1 } }, { "$push": { "users": userInfo } }, { 'new': true }, (err, info) => {
if (err) {
reject(err);
} else {
if (info) {
resolve();
} else {
reject('no item found');
}
}
});
});
};
Run Code Online (Sandbox Code Playgroud)
itemLike.js
const itemLike = new Schema({
item_id: { type: mongoose.Schema.ObjectId, ref: 'items', index: true },
no_of_likes: { type: Number, default: 0 },
users: [{ type: mongoose.Schema.ObjectId, ref: 'user' }]
}, { versionKey: false });
module.exports = mongoose.model('item_like', itemLike);
Run Code Online (Sandbox Code Playgroud)
一旦我执行这个查询,我就会收到如下所示的错误:
events.js:160
throw er; // Unhandled 'error' event
^
TypeError: callback.apply is not a function
at Query.<anonymous> (C:\Users\uName\api\node_modules\mongoose\lib\model.js:3702:16)
at C:\Users\uName\api\node_modules\kareem\index.js:273:21
at C:\Users\uName\api\node_modules\kareem\index.js:127:16
at _combinedTickCallback (internal/process/next_tick.js:67:7)
at process._tickDomainCallback (internal/process/next_tick.js:122:9)
Run Code Online (Sandbox Code Playgroud)
我在这里错过了什么吗?
Kir*_*kin 12
findOneAndUpdate的文档显示您提供的参数太多。应该是conditions, update, options, callback。
您收到错误,因为 Mongoose 试图{ 'new': true }作为回调函数调用。看起来您的更新定义被错误地拆分为两个对象。
您需要删除下面以粗体突出显示的大括号。
{ $inc: { no_of_likes: 1 } } , { "$push": { "users": userInfo } }
为完整起见,您的最终更新定义应如下所示:
{ $inc: { no_of_likes: 1 }, "$push": { "users": userInfo } }
Run Code Online (Sandbox Code Playgroud)
小智 7
上面的评论是正确的,但具有误导性(这使得错误看起来像是修复),这是正确的语法:
{ $inc: { no_of_likes: 1 } , "$push": { "users": userInfo } }
| 归档时间: |
|
| 查看次数: |
13607 次 |
| 最近记录: |