如何使用 Promise 保存多个 mongodb 集合?

How to save multiple mongodb collections using Promise?

使用 async library 我可以使用下面的代码save 数据

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);
});

如何修改 save 函数使其 return promise?

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

现在我的问题是,如何在不使用 async library 的情况下使用 promise 编写 save 函数??

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

save函数中使用Promise.all,然后你就可以按预期使用它了

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');
})