2017-05-04 68 views
0

我想重構我的代碼。目前,在保存用戶和收取信用卡方面,一切都完美無缺。Node.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'); 
     } 
     }); 
    }); 
    }); 

回答

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