Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/418.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Mongoose查询不';不要返回错误_Javascript_Node.js_Mongodb_Coffeescript_Mongoose - Fatal编程技术网

Javascript Mongoose查询不';不要返回错误

Javascript Mongoose查询不';不要返回错误,javascript,node.js,mongodb,coffeescript,mongoose,Javascript,Node.js,Mongodb,Coffeescript,Mongoose,我正在处理mongoose,我只是试图返回我集合中的一个对象(据我所知,它相当于SQL表中的一行) 在我观看的视频中,它说所有来自mongoose的回调都会返回错误和结果,但我只能返回结果,而不是错误(日志未定义),即使我强制执行错误,也不会发生任何事情 当我有错误时,如何发现 这是我的密码 app = require("../server") dashboard = require("../models/dashboard") app.get('/request', (req, res)-&

我正在处理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);
  });
});
传递给回调的第一个参数是错误:

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

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

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

承诺的工作方式不同,有两种功能:

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

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

即使我将其反转,第二个参数也未定义,无论我做什么,如果第一个参数是错误,那么它为什么返回我的结果?@grasshopper如果第二个参数始终未定义,那么“为什么返回我的结果”是什么意思?这些语句似乎相互矛盾。它返回查询的结果,因此我没有得到错误消息,而是得到了我的所有信息collection@grasshopper为什么会发生错误?我之所以会发生错误,是因为正如您所说,错误是第一个参数,所以它应该返回“null”如果函数成功,第二个参数应该返回查询结果。然而,这并不是发生的事情,无论我如何命名第一个参数,它都将返回我的查询结果。