Javascript Meteor方法中带有数据库更新的Meteor异步函数

Javascript Meteor方法中带有数据库更新的Meteor异步函数,javascript,node.js,meteor,Javascript,Node.js,Meteor,在过去的几个小时里,我一直在尝试一个异步方法来处理meteor方法及其数据库 虽然使用wrapAsync对于简单的方法调用非常有效,但在本例中,我很难让它正常工作 任何帮助都将不胜感激 正在讨论的异步方法: chargebee.subscription.list({ limit : 5, "plan_id[is]" : "basic", "status[is]" : "active", "sort_by[asc]" : "created_at" }).request(func

在过去的几个小时里,我一直在尝试一个异步方法来处理meteor方法及其数据库

虽然使用wrapAsync对于简单的方法调用非常有效,但在本例中,我很难让它正常工作

任何帮助都将不胜感激

正在讨论的异步方法:

chargebee.subscription.list({
  limit : 5, 
  "plan_id[is]" : "basic", 
  "status[is]" : "active",
  "sort_by[asc]" : "created_at"
}).request(function(error,result){
  if(error){
    //handle error
    console.log(error);
  }else{
    for(var i = 0; i < result.list.length;i++){
      var entry=result.list[i]
      console.log(entry);
      var subscription = entry.subscription;
      var customer = entry.customer;
      var card = entry.card;
    }
  }
});
您应该将异步方法本身包装在Meteor.wrapAsync中。在您的代码中,您仅包装chargebee.subscription.list,根据您的示例,它不是异步的

您应该包装.request方法,而不是它的调用:

//调用'subscription.list' //为了更好地理解 试一试{ var list=chargebee.subscription.list{ 限额:5, customer_id[is]:Meteor.userId, 状态[是]:活动, 排序依据[asc]:在 }; var result=Meteor.wrapAsynclist.request; //过程结果 }捕捉错误{ //过程错误 }
不幸的是,这也不起作用。它没有在Meteor.wrapAsynclist.request;上执行任何操作;。此调用后的所有内容都未执行。我收到以下错误服务器端:TypeError:无法读取RequestWrapper.request[…]\node\u modules\chargebee\lib\chargebee.js的未定义属性'HasidUrl',当我将其与其他api点一起使用时,它返回{状态:'pending'}@user2693017问题是关于使用Meteor.wrapAsync的正确方法,而不是关于使用chargebee和/或它的问题。是的,但在两种方法相互依赖的情况下。不是简单的方法调用;
    try {
        var result = Meteor.wrapAsync(chargebee.subscription.list, chargebee.subscription)({
            limit: 5,
            "customer_id[is]": Meteor.userId(),
            "status[is]": "active",
            "sort_by[asc]": "created_at"
        }).request();

        if (result.list[0]) {
            const subscription = result.list[0].subscription;
            console.log("quantity", subscription.plan_quantity);

            Subs.update(
                {
                    owner_id: this.userId
                }, {
                    $set: {
                        quantity: subscription.plan_quantity
                    }
                }
            );
        }
    } catch(error) {
        console.log(error);
    }