Javascript Mongoose查询不';不要返回错误
我正在处理mongoose,我只是试图返回我集合中的一个对象(据我所知,它相当于SQL表中的一行) 在我观看的视频中,它说所有来自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)-&
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”如果函数成功,第二个参数应该返回查询结果。然而,这并不是发生的事情,无论我如何命名第一个参数,它都将返回我的查询结果。