2017-03-21 27 views
1

私は大学のプロジェクトを行っていますが、私の問題に関してはすべての投稿を読んだことがありますが、解決策を見つけることはまだありません。多分あなたは私を助けることができます。解決方法 "TypeError:callback.applyは関数ではありません"

コードは次のようである:私は次のエラーを取得する

viewerObj.update({_id: currentIDViewerVar} , {minutesWatched: 5},{upsert:true} , function (err,result) { 
 
              
 
      if (err) throw err; 
 
      console.log("Viewer " + userNameVar + " gespeichert"); 
 
      console.log("minsWatched" +minsWatched); 
 
});

。私は何が間違っているのか分かりません。

events.js:160 
 
     throw er; // Unhandled 'error' event 
 
    ^
 

 
TypeError: callback.apply is not a function 
 
    at C:\Users\picco\Desktop\TwitchWatcher_v19\TwitchWatcher\node_modules\mongoose\lib\model.js:3388:16 
 
    at Query.callback (C:\Users\picco\Desktop\TwitchWatcher_v19\TwitchWatcher\node_modules\mongoose\lib\query.js:2185:9) 
 
    at C:\Users\picco\Desktop\TwitchWatcher_v19\TwitchWatcher\node_modules\mongoose\node_modules\kareem\index.js:259:21 
 
    at C:\Users\picco\Desktop\TwitchWatcher_v19\TwitchWatcher\node_modules\mongoose\node_modules\kareem\index.js:127:16 
 
    at _combinedTickCallback (internal/process/next_tick.js:67:7) 
 
    at process._tickCallback (internal/process/next_tick.js:98:9) 
 

 
Process finished with exit code 1

事前にありがとうございます!

+1

'update'メソッドはパラメータ' update(doc、options、callback) 'の後になければなりません。あなたは余分なオブジェクトを渡しています。 – Li357

+1

私はmongodbについて何も知らないですが、 'update()'のためにいくつかのドキュメントを見ましたが、間違って使っているようです。では、使用しているメソッドのドキュメントを見直しましたか? –

答えて

1

引数が多すぎます。

変更この:これに

viewerObj.update({_id: currentIDViewerVar} , {minutesWatched: 5},{upsert:true} , function (err,result) { 

     if (err) throw err; 
     console.log("Viewer " + userNameVar + " gespeichert"); 
     console.log("minsWatched" +minsWatched); 
}); 

viewerObj.update({_id: currentIDViewerVar, minutesWatched: 5}, {upsert:true}, function (err,result) { 

     if (err) throw err; 
     console.log("Viewer " + userNameVar + " gespeichert"); 
     console.log("minsWatched" +minsWatched); 
}); 

のドキュメントを参照してください:あなたはMOを更新している場合

+0

ありがとうございます!それは魅力のように動作します:) – dmtrshpv

2

を最初のパラメータとしてクエリを渡すことはありません。

Docs for Document#updateを参照してください。

したがって、この更新メソッドでは、3つのパラメータがあり、 がコールバックであり、更新メソッドがコールバックを期待するオブジェクト({upsert: true})を渡します。だからこそあなたはcallback.apply is not a functionになります。単に{ upsert: true }は関数ではないからです。

関連する問題