2014-10-09 153 views
0

我正在用猫鼬弄脏aroung,我只是试图返回一个在我的集合(这对我的理解是相当于一个SQL表中的行)的对象。猫鼬查询不会返回错误

在视频中,我正在看它说从猫鼬返回错误和结果的所有回调,但我只能返回结果从来没有错误(日志为未定义),即使当我强迫一个错误没有任何反应。

我该如何找出何时出现错误?

这里是我的代码。

app = require("../server") 
dashboard = require("../models/dashboard") 

app.get('/request', (req, res)-> 
    dashboard.users.find({}).exec().then (users, err) -> 
    console.log err 
    res.send users 
) 

第二个参数总是出来undefined,不管我命名它。另外这是写在CoffeeScript中我会低于

var app, dashboard; 
app = require("../server"); 
dashboard = require("../models/dashboard"); 
app.get('/request', function(req, res) { 
    return dashboard.users.find({}).exec().then(function(users, err) { 
    console.log(err); 
    return res.send(users); 
    }); 
}); 

回答

1

JavaScript版本的第一参数传递给回调的错误:

dashboard.users.find({}).exec().then (err, users) -> 
    etc... 

没关系我的第一个答案,我只是注意到你正在使用Promise,它与“常规”回调不同。

使用常规回调,传递的第一个参数始终是错误值(或者在没有错误发生时为null),并且以下参数是结果参数(通常只有一个,有时不止一个)。

承诺不同的方式工作,具有两个功能:当操作(在这种情况下,find)是成功的

.then(
    function(results) { ... }, 
    function(err) { ... } 
) 

第一功能将被调用。发生错误时将调用第二个函数。

+0

即使当我反转它的第二个参数是不确定的,不管我做什么,如果第一个参数是错误,为什么它返回我的结果呢? – grasshopper 2014-10-09 14:06:27

+0

@grasshopper如果第二个参数总是未定义,那么“为什么它返回我的结果”是什么意思?这些言论似乎相互矛盾。 – robertklep 2014-10-09 14:09:09

+0

它返回查询结果,因此,而不是得到一个错误消息,我得到我的集合中的一切 – grasshopper 2014-10-09 22:33:52