在NodeJS中迭代数组时多个等待

时间:2019-11-02 15:52:53

标签: node.js promise async-await

我在MongoDB的两个表X和Y之间有一个N:M关系。两个表中都有记录。我需要更新这两个表之间的相互关系。我通过导入具有关系的文件来做到这一点。我需要按照以下逻辑顺序同步执行此操作:

  1. 在X中查找记录以获取内部ID X-1
  2. 在Y中查找并更新记录以指向X-1
  3. 更新X中的记录以指向Y1

三个操作会给我X1和Y1之间的N:N关系。

问题是,当我遍历同步调用这三个操作的数组时,它不起作用,因为循环的执行不等待promise。

这是我的伪代码:

let relations = JSON.parse(data);
productsRelations.map(async (relation) => {
  let x1 = await findX(x1); // find x1 based on info in file
  let y1 = await findAndUpdateY(y1, x1); // find and update y1 with relation to x1
  await updateX(x1, y1); // update x1 with relation to y1
});

结果是,调用findXfindAndUpdateY尚未解析。我敢肯定有一个简单的解决方案,希望有人能启发我。

1 个答案:

答案 0 :(得分:0)

@ Mike'Pomax'Kamermans的回复确实是问题。我将其更改为此以获得预期的结果:

realloc()