Mongoose查询不会返回错误

时间:2014-10-09 10:29:36

标签: javascript node.js mongodb coffeescript mongoose

我正在使用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);
  });
});

1 个答案:

答案 0 :(得分:1)

传递给回调的第一个参数是错误:

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

别介意我的第一个答案,我只是注意到你使用的是承诺,它与“常规”回调不同。

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

Promise以不同的方式工作,有两个功能:

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

当操作(在本例中为find)成功时,将调用第一个函数。发生错误时将调用第二个函数。