【发布时间】:2020-11-02 21:32:55
【问题描述】:
我使用 pg-promise 并尝试在用户模型中向数据库发出请求以获取所有用户的数组,如下所示:
exports.getAllUsers = function () {
let users = db.any("SELECT * FROM users;").then(function (data) {
return data; // in debug mode data is my expected array
});
return users;
};
但是当我从控制器发出 get 请求时,它返回 promise Promise { <pending> },而不是我预期的 json 对象数组。
有一个控制器:
exports.getUsers = function (req, res) {
let users = userModel.getAllUsers();
console.log(users); // here it outputs Promise { <pending> }
res.json(users);
};
如何获取数组而不是promise?
【问题讨论】:
-
您正在返回
then函数调用的返回值。你认为这个电话会返回什么?它返回一个Promise对象。 -
@amn 好的,知道了。但是如何获得我想要的价值?在调试模式下,“数据”是一个数组。
-
data作为数组与调试模式无关,我向你保证——传递给then的回调总是使用已解决的承诺的值调用你打电话给then。如果db.any返回的promise 用一个数组解析,那么data就是那个数组,句号。如果您想向我保证这是调试模式,则必须有其他东西在起作用。当然,解析值的类型可能会有所不同——但这将是pg-promise的内部工作原理。
标签: javascript node.js express pg-promise