最近我一直在重写非常简单的服务器。我一直在尝试引入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())
})
谢谢。
答案 0 :(得分:3)
您正在对Promise对象调用setcookie()
,而不是它将解析为的值。
这样做吧:
res.json
您的代码中还有其他可疑的地方:gameCategoryList.listAllCategories().then(category => res.json(category));
解析为new Promise
,但是在category
回调中,您将其视为一个数组(这很可能是正确的) ,但您只能从中提取第一个数组元素(通过对其进行分解)。如果不希望这样做,请从then
参数中删除方括号。