我想获取每个父母的孩子记录。
最初,我有代码来获取父记录数组:
public get() {
return this.db.any(sql.get);
}
然后,对于每个父记录,需要获取子记录。因此,代码变为:
public get() {
return this.db.task("get-parents", async (t) => {
const parents = await t.any(sql.get);
for(var i = 0; i < parents.length; i++) {
parents[i].children = await t.any(sqlProvider.children.get, { id: parents[i].id });
}
return paytypes;
});
}
想实现相同的目标,甚至可以通过地图进行优化
public get() {
return this.db.task("get-parents", async (t) => {
const parents = await t.any(sql.get);
const p = await Promise.all(parents.map((p: any) => t.any(sqlProvider.children.get, { id: p.id })));
p.map((v: any, ind: number) => parents[ind].children = v );
return parents;
});
}
但是我不喜欢在最后一个解决方案中两次调用map函数。
是否有更好/更短的方法来执行子并行查询?也许使用task.batch或...?