水线ORM将查找结果分配给变量

时间:2018-03-09 08:20:36

标签: sails.js waterline

我想结合2个查询的结果,然后将它们作为一个返回,如下所示:

test: async (req, res) => {
  const valOne = TableOne.find({ id: id })
      .exec((err, result) => {
        if (err) {
          res.serverError(err);
        }
        return result;
      });
  const valTwo = TableTwo.find({ id: id })
      .exec((err, result) => {
        if (err) {
          res.serverError(err);
        }
        return result;
      });
  const data = {
    keyOne: valOne,
    keyTwo: valTwo,
  };
  res.json(data);
}    

我理解上面的代码不会返回,因为它是异步的。我怎样才能做到这一点?

1 个答案:

答案 0 :(得分:2)

您提供的信息不多:节点版本,风帆版本等

这里有几种方法: 1.使用承诺 2.使用回调链接 3.使用await / async

如果你使用sails 1.0和node> = 8,你最好的选择是使用await / async,所以你的代码应该是这样的:

test: async (req, res) => {
  let valOne, valTwo;

  try {
    valOne = await TableOne.find({ id: id });
    valTwo = await TableTwo.find({ id: id });
  } catch (err) {
    return res.serverError(err); //or res.badRequest(err);
  }

  const data = {
    keyOne: valOne,
    keyTwo: valTwo,
  };

  res.json(data);
}