我想在另一个变量中返回 sequelize query
中的值。我必须尝试不同的解决方案,但我有相同的结果:
Promise {
_bitField: 2097152,
_fulfillmentHandler0: undefined,
_rejectionHandler0: undefined,
_promise0: undefined,
_receiver0: undefined,
_boundTo: SellerPresent }
我的js文件(目前):
function findIdSeller(selectEvent) {
var match = {attribute: ['seller_id'], where: {event_id: selectEvent}, raw: true};
return models.SellerPresent.findAll(match)}
exports.findDataSeller = function (selectEvent) {
var seller = [];
return findIdSeller(selectEvent).then(function (result) {
return seller.push(result.seller_id)
})
};
我需要在路线中导出这些数据。我怎么能这样做?
答案 0 :(得分:0)
首先,请注意不能同步处理(或导出)异步结果,因此您需要始终坚持承诺。
其次,findAll
方法将返回一个数组,因此您不应该访问该数组上的seller_id
,而应该访问其元素。为此,您可以使用map
:
function findIdSeller(selectEvent) {
var match = {
attribute: ['seller_id'],
where: {
event_id: selectEvent
},
raw: true
};
return models.SellerPresent.findAll(match);
}
// You can export a promise, not the promised value:
exports.findDataSellerPromise = function (selectEvent) {
return findIdSeller(selectEvent).then(function (result) {
return result.map(function(seller) {
return seller.seller_id
});
});
});
您需要致电findDataSellerPromise
作为回复承诺。因此,例如,如果您需要将承诺的数据用作路由中的响应,请在其上调用then
:
app.get('/', function (req, res) {
// ....
findDataSellerPromise(selectEvent).then(function(sellers) {
res.send(sellers);
});
});