Javascript Meteor方法中带有数据库更新的Meteor异步函数
在过去的几个小时里,我一直在尝试一个异步方法来处理meteor方法及其数据库 虽然使用wrapAsync对于简单的方法调用非常有效,但在本例中,我很难让它正常工作 任何帮助都将不胜感激 正在讨论的异步方法: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
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);
}