How to save multiple mongodb collections using Promise?

亡梦爱人 提交于 2019-12-12 02:38:55

问题


using async library I can save data using below code

function save(callback){
  async.parallel([
        function(cb){
            Collection1.collection.insert(collections1,cb);
        },
        function(cb){
            Collection2.collection.insert(collections2,cb);
        },
        function(cb){
            Collection3.collection.insert(collections3,cb);
        }
    ],callback);
}
save(function(){
    console.log(arguments);
});

How I can modifiy save function so it will return promise?

save()
.then(function(){
  console.log('success');
})
.catch(function(){
  console.log('error');
})

Now my question is, How to write save function using promise without using async library??

function save(){
  return new Promise(function(resolve,reject){
   //save collections here?? or any other way???
  })
}

回答1:


Use Promise.all inside save function, then you are able to use it as you expect

function save(){
    var promises = [
        new Promise(function(resolve, reject) {
            Collection1.collection.insert(collections1, function(err, done){
                 if(err)
                     reject(err);
                 else
                     resolve(done);
            });
        }),
        new Promise(function(resolve, reject) {
            Collection2.collection.insert(collections2, function(err, done){
                 if(err)
                     reject(err);
                 else
                     resolve(done);
            });
        }),
        new Promise(function(resolve, reject) {
            Collection3.collection.insert(collections3, function(err, done){
                 if(err)
                     reject(err);
                 else
                     resolve(done);
            });
        })
    ];
    return Promise.all(promises);
}

save().then(function(){
   console.log('success');
}).catch(function(){
   console.log('error');
})


来源:https://stackoverflow.com/questions/35381423/how-to-save-multiple-mongodb-collections-using-promise

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!