BrainTree 节点集成
BrainTree node integration
我遇到了我遇到过的最奇怪的问题。我只是简单地找不到我的代码有什么问题。
这是我的用户模型
var userSchema = new Schema({
firstName: {type: String, required: true, trim: true},
lastName: {type: String, required: true, trim: true},
address: {
street: {type: String, required: true, trim: true},
city: {type: String, required: true, trim: true},
state: {type: String, min: 2, max: 2, required: false},
zipCode: {type: String, required: true, trim: true}
},
customerId: String,
subscription: {
id: String,
status: String,
planId: String,
price: Number,
nextBillingDate: Date
},
creditCard: {
token: {type: String, required: true}
},
email: {type: String, required: true, unique: true, trim: true},
password: {type: String, required: true, trim: true},
phone: {type: String, required: true, trim: true},
birthDate: {type: Date, required: true, trim: true},
role: {staff: Boolean, admin: Boolean, sAdmin: Boolean},
companies:[
{
type: Schema.Types.ObjectId,
ref: 'Company',
required: true
}
],
edited: {type: Date},
created: {type: Date, default: Date.now}
});
现在我正在使用此代码在我的应用程序上创建一个用户管理。
// BrainTree API
var nonce = req.body.payment_method_nonce;
gateway.customer.create({
firstName: user.firstName,
lastName: user.lastName,
company: req.body.compName,
email: req.body.email,
paymentMethodNonce: nonce
}, function (err, result) {
if(err) return handleError(err);
//NO ERROR FOUND
user.customerId = result.customer.id;
gateway.subscription.create({
paymentMethodToken: result.customer.paymentMethods[0].token,
planId: 'myId'
}, function (err, result) {
if(err){
throw err;
}
else {
//save subscription info
user.subscription.id = result.subscription.id;
user.subscription.status = result.subscription.status;
user.subscription.planId = result.subscription.status;
user.subscription.price = result.subscription.price;
user.subscription.nextBillingDate = result.subscription.nextBillingDate;
//transaction info
t.id = result.subscription.transactions[0].id;
t.amount = result.subscription.transactions[0].amount;
t.creditCard.maskedNumber = result.subscription.transactions[0].creditCard.maskedNumber;
t.created = result.subscription.transactions[0].createdAt;
saveAdmin();
}
});
现在 user.customerId = result.customer.id;
我收到此控制台错误 "Cannot read property 'id' of undefined",但事实并非如此。当我执行 console.log(result.customer.id) 时,我得到了 Id。我只是不知道为什么会抛出错误。
我不知道是否有人可以帮助我,因为你永远不知道。
提前致谢。
我解决了 return handleError(err) 的问题,有些是如何执行请求两次的。所以我将 return handleError(err) 更改为 return console.error(err) 并解决了问题。
我遇到了我遇到过的最奇怪的问题。我只是简单地找不到我的代码有什么问题。
这是我的用户模型
var userSchema = new Schema({
firstName: {type: String, required: true, trim: true},
lastName: {type: String, required: true, trim: true},
address: {
street: {type: String, required: true, trim: true},
city: {type: String, required: true, trim: true},
state: {type: String, min: 2, max: 2, required: false},
zipCode: {type: String, required: true, trim: true}
},
customerId: String,
subscription: {
id: String,
status: String,
planId: String,
price: Number,
nextBillingDate: Date
},
creditCard: {
token: {type: String, required: true}
},
email: {type: String, required: true, unique: true, trim: true},
password: {type: String, required: true, trim: true},
phone: {type: String, required: true, trim: true},
birthDate: {type: Date, required: true, trim: true},
role: {staff: Boolean, admin: Boolean, sAdmin: Boolean},
companies:[
{
type: Schema.Types.ObjectId,
ref: 'Company',
required: true
}
],
edited: {type: Date},
created: {type: Date, default: Date.now}
});
现在我正在使用此代码在我的应用程序上创建一个用户管理。
// BrainTree API
var nonce = req.body.payment_method_nonce;
gateway.customer.create({
firstName: user.firstName,
lastName: user.lastName,
company: req.body.compName,
email: req.body.email,
paymentMethodNonce: nonce
}, function (err, result) {
if(err) return handleError(err);
//NO ERROR FOUND
user.customerId = result.customer.id;
gateway.subscription.create({
paymentMethodToken: result.customer.paymentMethods[0].token,
planId: 'myId'
}, function (err, result) {
if(err){
throw err;
}
else {
//save subscription info
user.subscription.id = result.subscription.id;
user.subscription.status = result.subscription.status;
user.subscription.planId = result.subscription.status;
user.subscription.price = result.subscription.price;
user.subscription.nextBillingDate = result.subscription.nextBillingDate;
//transaction info
t.id = result.subscription.transactions[0].id;
t.amount = result.subscription.transactions[0].amount;
t.creditCard.maskedNumber = result.subscription.transactions[0].creditCard.maskedNumber;
t.created = result.subscription.transactions[0].createdAt;
saveAdmin();
}
});
现在 user.customerId = result.customer.id;
我收到此控制台错误 "Cannot read property 'id' of undefined",但事实并非如此。当我执行 console.log(result.customer.id) 时,我得到了 Id。我只是不知道为什么会抛出错误。
我不知道是否有人可以帮助我,因为你永远不知道。
提前致谢。
我解决了 return handleError(err) 的问题,有些是如何执行请求两次的。所以我将 return handleError(err) 更改为 return console.error(err) 并解决了问题。