最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

findOneAndUpdate与推阵列元件给出了猫鼬错误

运维笔记admin8浏览0评论

findOneAndUpdate与推阵列元件给出了猫鼬错误

findOneAndUpdate与推阵列元件给出了猫鼬错误

我的查询,如下图所示:

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');
                }
            }
        });
    });
};

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);

当我执行这个查询,我得到的错误,如下图所示:

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)

我错过了什么吗?

回答如下:

纵观文档为findOneAndUpdate,你提供一个参数太多。

它应该是conditions, update, options, callback。你因为猫鼬试图调用{ 'new': true }作为回调函数得到一个错误。

它看起来像你的更新定义已经被分成误两个对象。您需要删除下面的粗体突出的括号。

{$ INC:{no_of_likes:1}},{ “$推”:{ “用户”:用户信息}}

发布评论

评论列表(0)

  1. 暂无评论