TypeError:callback.apply不是函数

时间:2017-02-02 07:23:25

标签: javascript node.js mongodb mongoose

我对node和mongoose有点新意,我正在尝试删除集合中的所有文档。我正在使用此代码:

app.delete('/accounts', function deleteAccount(req, res, next){

    Account.remove({}, {multi:true});
    res.json({
        message: 'Accounts Deleted!'
    });

});

问题是,当我向此方法发出API请求时,它会开始处理并且不会停止,除非我中止它。代码删除了我的集合中的所有文档,但它正在执行它时出错。这是它抛出的错误:

  

events.js:141

     扔掉呃//未处理的'错误'事件       ^

     

TypeError:callback.apply不是函数

我希望我的代码在没有此错误的情况下工作,我不希望我的请求在处理请求时挂起。欢迎任何建议。

1 个答案:

答案 0 :(得分:5)

您需要传递remove方法的回调:

Account.remove({}, function(err, result){
  res.json({
        message: 'Accounts Deleted!'
    });
});

如果你不想等待完成:

var cmd = Account.remove({});
cmd.exec();
res.json({
            message: 'Accounts Deleted!'
        });

实际上remove得到两个参数,第二个参数是可选的。 如果存在第二个,则应该是回调。

删除文档时,您没有multi选项。

你得到的例外是mongoose正好将{multi: true}视为回调