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) 并解决了问题。