最近几个小时,我一直试图让异步方法与流星方法及其数据库一起玩。
虽然使用wrapAsync
非常适合简单的方法调用,但在这种情况下我努力让它工作。
非常感谢任何帮助。
https://docs.meteor.com/api/core.html#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;
}
}
});
我尝试过但没有工作:
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);
}
答案 0 :(得分:1)
您应该在Meteor.wrapAsync
中包含异步方法本身。在您的代码中,您仅包装chargebee.subscription.list
,而不是异步(基于您的示例)。
你应该改为使用.request()
方法(而不是它的调用):
// Call to `subscription.list()` extracted
// for better understanding
try {
var list = chargebee.subscription.list({
limit: 5,
"customer_id[is]": Meteor.userId(),
"status[is]": "active",
"sort_by[asc]": "created_at"
});
var result = Meteor.wrapAsync(list.request)();
// process result
} catch(error) {
// process error
}