微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

javascript – Bluebird承诺没有收到任何数据

我正在尝试将promises集成到我正在开发的应用程序的API中.我通过以下路线收到Postman中的“没有收到数据”,而注释掉的块工作得很好.

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正在同步执行您的功能.任何同步异常都将变为对返回的promise的拒绝.请尝试使用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);
});

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐