如何解决“TypeError:callback.apply不是一个函数”?

我正在做一个大学项目,我已经阅读了关于我的问题的每一个post,但我还没有find解决办法。 也许你可以帮我。

代码如下:

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 

先谢谢你!

       

网上收集的解决方案 "如何解决“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); }); 

对此:

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

看文档:

如果您正在更新mongoose文档,则不会将查询作为第一个parameter passing。

请参阅Docs for Document#更新 。

因此,这个更新方法需要3个参数,第三个参数是callback函数,并且传递一个更新方法期望callback的对象( {upsert: true} )。 这就是为什么你得到callback.apply is not a function 。 只是因为{ upsert: true }不是一个函数。