2017-05-04 2 views
0

下記のコードをリファクタリングしようとしています。現在、ユーザーを保存してクレジットカードを請求することに関して、すべてが完璧に機能します。Node.js Save User

私がしようとしているのは、機能を終了してユーザーを保存することです。 (下に示す)現在、ユーザーのクレジットカードが拒否された場合でも、「購入」の失敗ページにリダイレクトされてもユーザーアカウントが作成されます。私はそれが機能の終わりまでユーザーを保存しないようにする必要があります。

これを行うにはどのようにコードを変更しますか?

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