蓝鸟承诺不会收到任何数据

Bluebird promises no data received

本文关键字:任何 数据 承诺 蓝鸟      更新时间:2023-09-26

我正在尝试将承诺集成到我正在开发的应用程序的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正在同步执行您的函数。任何同步异常都将在返回的承诺上变成拒绝。请尝试使用如下所示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);
});