2016-04-18 8 views
1

注:このトピックについては多くの質問がありますが、(コードの問題などにより)コードを正しい形式にすることができません。これは私の具体的な事例に関する質問です。ファイバー内に流星挿入を実行する方法

"lib"フォルダのinit.jsに、web3/ethereumパッケージからイベントを取り出してコレクションに格納するコードがあります。しかし、質問は純粋に流星の質問です。 web3/ethereumに関するコンテキスト情報を含めることにしました。これはおそらくMeteorコレクションにweb3/ethereumイベントを格納する他の人々が遭遇した同様の問題であるからです。

var events = contract_instance.allEvents([]); 

events.watch(function(error, event){ 
    if (!error) 
    console.log(event.args); 

var event_object_value1 = event.args.value1; 
//everything up to this point works fine. event_object is in a json format. 

//inserting the value into a collection on the server side like this is what causes the error. 
collection.insert({"key": value1}); 
}); 

最終行でMeteor code must always run within a Fiber.エラーが発生します。通常、流星法を使用して挿入しますが、挿入を実際に行っても同じエラーが発生すると思われます。

stackoverflowでこのエラーについてかなりの質問がありますが、コード内でコードを正しく取得できませんでした。私はここで、この例に従うことを試みたが、私はそれが道に流星の私の理解の上だけだと思う​​: https://meteorhacks.com/fibers-eventloop-and-meteor/

答えて

2

だけ

events.watch(Meteor.bindEnvironment(function(error, event) { 
    ... 
})); 

Meteor.bindEnvironment

events.watch(function(error, event) { 
    ... 
}); 

を交換することを保証しますラップされた機能はファイバ内で実行されます。

関連する問題