如何串联后继结果?

时间:2019-06-10 12:07:02

标签: javascript sequelize.js

在我的node.js应用程序中,我调用了一个续集查询,在其.then()内部,我调用了另一个续集查询。我希望将第二个查询的结果附加到第一个查询中,以便可以将其作为带有JSON数组的JSON返回。该怎么办?

{
    result1,
    result2[
    ...
    ]
}

2 个答案:

答案 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