Node.js保存用户

时间:2017-05-04 19:21:59

标签: node.js mongodb express passport.js

我正在尝试重构下面的代码。目前,一切都在保存用户和充值信用卡方面完美无缺。

我要做的是等到功能结束以保存用户。 (如下所示)目前,如果用户的信用卡被拒绝,即使重定向到“购买”失败页面,它仍会创建用户帐户。我需要它直到函数结束才保存用户。

如何更改代码才能执行此操作?

user.save(function(Usererr) {

        var token = req.body.stripeToken; // Using Express
        var charge = stripe.charges.create({
        amount: 749,
        currency: "usd",
        description: "Example charge",
        source: token,

        }, function(err, charge) {
            if(err) {
              console.log(err);
              return res.redirect('/buy')
            }

        if(Usererr){
        return res.redirect('/buy')
        } else {

              //I WANT TO SAVE THE USER HERE
              //I WANT TO SAVE THE USER HERE

              console.log('all looks good')
              res.redirect('/results');
        }
        });
    });
    });

1 个答案:

答案 0 :(得分:0)

我没有更改用户保存位置,而是删除了' user.remove()发生错误时的用户。请查看以下内容:

user.save(function(err) {
    console.log('this is the problem' + ' ' + err)
    if(err){
    return res.redirect('/buy')
    }

    var token = req.body.stripeToken; // Using Express
    var charge = stripe.charges.create({
    amount: 749,
    currency: "usd",
    description: "Example charge",
    source: token,

    }, function(err, charge) {
        if(err) {
          console.log(err);
        user.remove();
          return res.redirect('/buy')
        }
        console.log('charged')
        req.logIn(user, function(err) {
          if(err) {
            console.log(err);
          }
          console.log('all looks good')
          res.redirect('/results');
        });
    });
  });
});