蓝鸟承诺没有收到任何数据

我正在尝试将承诺整合到我正在开发的应用程序的API中。 邮差从下面的路线收到“没有收到数据”,而注释掉的区块工作得很好。

import User from './models/User'; import express from 'express'; import Promise from 'bluebird'; const router = express.Router(); router.get("/", function(req, res, next){ Promise.try(function(){ User.find({}, function(err, users) { return Promise.resolve(users); }); }).then(function(result){ if (result instanceof Function) { result(res); } else { return res.json(result); } }).catch(function(err){ next(err); }); }); /* router.get("/", function(req, res, next){ User.find({}, function(err, users) { return res.json(users); }); }); */ module.exports = router; 

Promise.try正在同步执行你的function。 任何同步exception将在返回的承诺上变成拒绝。 请尝试使用下面的new Promise做到这一点。

 var p = new Promise(function (resolve, reject){ User.find({}, function(err, users) { if (err) reject(err); else resolve(users); }); }); p.then(function(result){ return res.json(result); }).catch(function(err){ next(err); });