2017-08-14 5 views
1

にエラーを与える:できるだけ早く私はこのクエリを実行するよう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\anand\quFlipApi\node_modules\mongoose\lib\model.js:3702:16) 
    at C:\Users\anand\quFlipApi\node_modules\kareem\index.js:273:21 
    at C:\Users\anand\quFlipApi\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) 

ここには何かが欠けていますか?

答えて

2

findOneAndUpdateのドキュメントを見ると、パラメータが多すぎます。

conditions, update, options, callbackである必要があります。 Mongooseがコールバック関数として{ 'new': true }を呼び出そうとしているため、エラーが発生しています。

更新定義が誤って2つのオブジェクトに分割されているようです。下の太字で強調表示されている中括弧を削除する必要があります。

{$ INC:{no_of_likes:1} }{ "$プッシュ":{ "ユーザ":ユーザー情報}}

関連する問題