在NodeJS代码中同步执行

时间:2018-03-23 17:15:25

标签: node.js synchronization mongojs

我正在尝试执行以下操作:

var mongojs = require("mongojs");
var db = mongojs("myplaylist", ["songs"])

data = [{}, {}, {}, .... ]     /*Array of objects*/

for(var i = 0; i < data.length; i++){
     console.log(data);
     db.songs.save(data[i], function(err, data[i]){
          if(error) throw error;
          console.log(data[i]);
     });
}

`

在上面的代码片段中,通过显示数据数组中的所有项而不保存数据库中的单个记录来迭代迭代。

请帮我解决这个问题。

1 个答案:

答案 0 :(得分:0)

由于save是异步功能,因此您需要使用callbackspromiseasync/await。这是一个如何处理这个承诺的例子:

var mongojs = require("mongojs");
var db = mongojs("myplaylist", ["songs"])

data = [{}, {}, {}, .... ]     /*Array of objects*/

var data_arr = [];
data.forEach(element => {
    data_arr.push(db.songs.save(element));
});

Promise.all(data_arr).then(response =>{
    console.log(response) //contains response array of each save call
}).catch(err => {
    console.log(err);
});