使用Stripe API创建订阅计划时,无法更新Meteor用户对象

时间:2016-02-11 15:30:15

标签: mongodb meteor

到目前为止,一切都很有效。用户登录网站,进入高级页面,可以通过Stripe Checkout选择要订购的包。客户完成订单后,将在条带仪表板上创建客户并注册订阅。大。

但是,我在使用订阅信息更新Meteor.users对象时遇到问题。这就是代码的外观:

 initiateCustomer: function(email, token){
  var email = email;
  var token = token;

  var newCustomer = new Future();

  Meteor.call('createCustomer', token, email, function(error, stripeCustomer){
    if (error) {
      console.log(error);
    } else {
      var customerId = stripeCustomer.id;
      var plan = "Premium";

      Meteor.call('createSubscription', customerId, plan, function(error, response){
        if (error) {
          console.log(error);
        } else {
          try {

            var currentUser = Meteor.userId();

            var user = {
            _id: currentUser
          }

            var subscription = {
              customerId: customerId,
              subscription: {
                plan: {
                  name: plan,
                  used: 0
                },
                payment: {
                  card: {
                    type: stripeCustomer.sources.data[0].brand,
                    lastFour: stripeCustomer.sources.data[0].last4
                  },
                  nextPaymentDue: response.current_period_end
                }
              }
            };

            Meteor.users.update(user, {
              $set: subscription
            }, function(error, response){
              if (error){
                console.log(error);
              } else {
                newCustomer.return(user);
              }
            });
          } catch(exception) {
            newCustomer.return(exception);
          }
        }
      });
    }
  });
  return newCustomer.wait();
},

Meteor.users.update()运算符给我带来了问题,因为它没有按照预期更新User对象。更新完成后,用户对象应该在users对象中包含_id,email和订阅信息。但是,方法调用完成后,订阅密钥永远不会添加到用户对象中。

0 个答案:

没有答案