Я хочу получить дочерние записи для каждого родителя.
Изначально у меня был код для извлечения массива родительских записей:
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 или ...?