NodeJS-Promise resolve返回空对象

时间:2019-11-06 21:22:47

标签: node.js json mongodb server promise

最近我一直在重写非常简单的服务器。我一直在尝试引入promise,但是由于某种原因,即使我的mongoDB数据库中包含数据(在本例中为类别列表),当我调用编写的以下方法时,它也会返回一个空的json对象{}。我尝试了多种方法。在此之前,这是一个非常简单的方法,效果很好,我正在尝试对其进行更新以允许更复杂的请求。

有人知道为什么我可能会返回一个空对象吗?它在邮递员中返回200 OK,所以我不相信有任何错误。

这是我的Controller类:

'use strict';
var mongoose = require('mongoose'),
Category = mongoose.model('Categories');

module.exports = function() {
    var mod = {
       listAllCategories() {

         return new Promise(function(resolve, reject) {

           Category.find({}, function(err, category) {
              if (err) {
                return reject(err)
              } else {
                return resolve(category)
              }
            });
          }).then(([category]) => {

            if(category)
            {
              return category
            }
            else
            {
              return { success: false }
            }
          });
       }
     }
     return mod;
};

这是我在Routes类中调用此方法的方式:

  app.get('/api/gameCategories', (req, res) => {
    res.json(gameCategoryList.listAllCategories())
  })

谢谢。

1 个答案:

答案 0 :(得分:3)

您正在对Promise对象调用setcookie(),而不是它将解析为的值。

这样做吧:

res.json

您的代码中还有其他可疑的地方:gameCategoryList.listAllCategories().then(category => res.json(category)); 解析为new Promise,但是在category回调中,您将其视为一个数组(这很可能是正确的) ,但您只能从中提取第一个数组元素(通过对其进行分解)。如果不希望这样做,请从then参数中删除方括号。