node.js - 我想在使用 node.js 完成所有 promise 后将数据插入 mongodb

标签 node.js mongodb express mongoose promise

我通过使用 Promise 将错误推送到数组中,但在将错误推送到数组之前,它会检查插入数据的条件,就像我正在插入数据一样。

var errorsArr= [];

var username = new Promise(function(resolve,reject){
    User.findOne({ "username": req.body.username },function(err,user){
        if(err)
            reject(err);

        if(user) {
            resolve(1);
        }else{
            resolve(0);
        }
    });
});
username.then(function(data){
    if( data == 1 )
        errorsArr.push({"msg": "Username already been taken."});
}).catch(function(err){
    console.log(err);
});

var email = new Promise(function(resolve,reject){
    User.findOne({ "email": req.body.email },function(err,user){
        if(err)
            reject(err);

        if(user) {
            resolve(1);
        }else{
            resolve(0);
        }
    });
});
email.then(function(data){
    if( data == 1 )
        errorsArr.push({"msg": "email already been taken."});
}).catch(function(err){
    console.log(err);
});

if(errorsArr.length >0)
{
    req.session.error = errorsArr;
    return  res.redirect('/auth/Registration');
}
else {
    var newUser = new User();
    newUser.username = req.body.username;
    newUser.password = req.body.password;
    newUser.sex = req.body.sex;
    newUser.email = req.body.email;
    newUser.phoneNumber = req.body.phoneNumber;
    newUser.age = req.body.age;
    newUser.designation = req.body.designation;
    newUser.timing = req.body.timing;
    var CurrentDate = moment.tz(new Date(req.body.joiningDate), "Asia/Karachi").unix();
    newUser.joiningDate = CurrentDate;
    newUser.save(function (err, user) {
        if (!err)
            return res.redirect('/auth/Login');
    });
}

你能帮我以更好的方式做到这一点吗,我是node.js的新手。提前致谢。

最佳答案

Promise.all 是您的解决方案。它等待所有的 promise 。

 Promise.all([p1,p2,..]).then(function() {
      // all loaded
  }, function() {
   // one or more failed
 });

引用链接:

http://www.html5rocks.com/en/tutorials/es6/promises/

关于node.js - 我想在使用 node.js 完成所有 promise 后将数据插入 mongodb,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35055240/

相关文章:

node.js - Mongodb使用过滤器在子文档中获取记录

node.js - 将 redis 与 Passportjs 一起用于 session 不起作用

mongodb - Grails 2.4.4对象映射示例未持久到Mongo DB

javascript - 从nodejs中的mongoDB查询返回数据

node.js - 模块应该在哪里写入文件?

Node.js:从 jpeg 图像到视频文件的实时转换

node.js - 使用express和Mongodb进行Graphql查询无法正常工作?

node.js - 更新/刷新快速 session

javascript - 在express js中从数据库全局访问配置

python - 使用nodejs接收python代码