父母带着孩子作为诺言

时间:2019-07-08 14:07:13

标签: pg-promise

我想获取每个父母的孩子记录。

最初,我有代码来获取父记录数组:

  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或...?

0 个答案:

没有答案