2017-10-23 14 views
0

の最後の数時間、私は非同期メソッドを得るために流星のメソッドとそのデータベースで素敵な再生しようとしています。Meteor非同期関数のメテオ - メソッドでデータベース更新

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); 
    } 

答えて

1

あなたはMeteor.wrapAsyncで非同期メソッド自体をラップする必要があります。あなたのコードでは、chargebee.subscription.listのみをラッピングしています。は、 async(あなたの例に基づいています)ではありません。

あなたが代わりに(ないそのコール).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 
} 
+0

残念ながら、これはどちらか動作しません。これはMeteor.wrapAsync(list.request)();で何もしていません。この呼び出し後のすべては実行されません。 – user2693017

+0

私はこのエラーのサーバー側を取得しています: '' TypeError:RequestWrapper.request([...] \ node_modules \ chargebee \ lib \ chargebee.js:100:34)で未定義の のプロパティ 'hasIdInUrl' – user2693017

+0

他のAPIポイントと一緒に使用すると、 '{status: 'pending'}' – user2693017

関連する問題