我正在使用mongoose搞乱,我只是想返回一个在我的集合中的对象(据我所知,它相当于SQL表中的一行)。
在视频中,我正在观看它表示所有来自mongoose的回调都会返回错误和结果,但我只能返回结果永远不会出现错误(记录为未定义),即使我强制错误也没有发生。
如何在发现错误时找出答案?
这是我的代码。
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
)
无论我怎么说,第二个参数总是未定义。这也是用coffeescript编写的,我将在下面有一个javascript版本
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);
});
});
答案 0 :(得分:1)
传递给回调的第一个参数是错误:
dashboard.users.find({}).exec().then (err, users) ->
etc...
别介意我的第一个答案,我只是注意到你使用的是承诺,它与“常规”回调不同。
对于常规回调,传递的第一个参数始终是错误值(或者在没有错误发生时为null
),并且以下参数是结果参数(通常只有一个,有时多于一个)。
Promise以不同的方式工作,有两个功能:
.then(
function(results) { ... },
function(err) { ... }
)
当操作(在本例中为find
)成功时,将调用第一个函数。发生错误时将调用第二个函数。