我想结合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);
}
我理解上面的代码不会返回,因为它是异步的。我怎样才能做到这一点?
答案 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);
}