在我的node.js应用程序中,我调用了一个续集查询,在其.then()内部,我调用了另一个续集查询。我希望将第二个查询的结果附加到第一个查询中,以便可以将其作为带有JSON数组的JSON返回。该怎么办?
{
result1,
result2[
...
]
}
答案 0 :(得分:0)
您可以将两个结果集附加到数组中,大致如下:
let myResult = []; // container for two results
SomeModel.findAll({
where: {'someField' : { [Op.like]: '%b%' }}
}).then(firstResultSet => {
myResult.push(firstResultSet);
SomeOtherModel.findAll(
{where: {'someField' : { [Op.like]: '%a%' }
}).then(secondResultSet=> {
myResult.push(secondResultSet);
result.send(myResult);
next();
});
})
答案 1 :(得分:0)
使用 Promise.all
和 ES6 数组扩展将为您提供一个非常干净的实现。请注意,如果您的数组是不同类型的,您会发现可靠地迭代最终结果具有挑战性。
const Some = SomeModel.findAll({ where: {'someField': { [Op.like]: '%b%' }} });
const Other = OtherModel.findAll({ where: {'someField': { [Op.like]: '%a%' }} });
Promise.all([Some, Other]).then([some, other] => [...some, ...other]);
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise/all https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Spread_syntax