使用mySQL和Mongodb的节点循环插入

时间:2018-05-08 23:46:50

标签: mysql node.js mongodb mongoose nodes

我有一个包含一个字段的表单,允许用户通过逗号分隔(ab1234,bc5678)输入多个开发人员ID。

提交表单后,我执行以下任务:

  1. 获取项目
  2. 使用mySQL
  3. 循环访问开发人员ID数组以获取其全名
  4. 使用MongoDB更新项目
  5. 我是新的并且确定这是可能的,我在下面的代码对我不起作用。如果下面的代码甚至接近,有人可以告诉我。

    Predicate<? extends A> pExtends2 = (B b) -> b.mB();
    

1 个答案:

答案 0 :(得分:0)

您看到这个的原因是因为您的await project.save();位于回调函数中。您的主函数不会等待所有回调完成并关闭数据库连接。让我们看看下面的例子

const myCallback = (param, callback) => {
  setTimeout(() => {
    console.log('callback function', param);
    callback();
  }, 1000)

}
const myAsync = async () => {
  console.log('inside async');
  const result = await axios.get('http://google.com/');
  for (let i = 0; i < 10; i++) {
    myCallback(i, () => {
      console.log('this is the actual callback function');
    });
  }
  const result2 = await axios.get('http://bing.com/');
  console.log('after second call');
}

myAsync();

这是

的输出
inside async
after second call
callback function 0
this is the actual callback function
...

如您所见,在回调函数之前打印after second call

要解决此问题,您可以将回调函数包装在承诺中,并在保存完成后解决该问题。