我正在尝试重构下面的代码。目前,一切都在保存用户和充值信用卡方面完美无缺。
我要做的是等到功能结束以保存用户。 (如下所示)目前,如果用户的信用卡被拒绝,即使重定向到“购买”失败页面,它仍会创建用户帐户。我需要它直到函数结束才保存用户。
如何更改代码才能执行此操作?
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 :(得分: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');
});
});
});
});