如何 运行 将 Meteor 插入到光纤中
How to run Meteor insert within a Fiber
注意:关于这个主题有很多问题,但我无法将我的代码(由于语法问题等)转换为正确的格式。所以这是关于我的具体实例的问题。
我在 "lib" 文件夹下的 init.js 中有一些代码,用于从 web3/ethereum 包中获取一个事件并将其存储在一个集合中。请注意,该问题纯粹是一个 Meteor 问题。我已经包含了关于 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.
错误。通常,我会使用 Meteor 方法插入,但我怀疑在实际执行插入时会遇到相同的错误。
关于 Whosebug 上的这个错误有很多问题,但我还没有真正能够在 fiber 中正确获取我的代码。我试图在这里遵循这个例子,但我认为这只是超越我对 Meteor 的理解的方式:
https://meteorhacks.com/fibers-eventloop-and-meteor/
直接替换
events.watch(function(error, event) {
...
});
与
events.watch(Meteor.bindEnvironment(function(error, event) {
...
}));
Meteor.bindEnvironment
确保包装函数在纤程内运行。
注意:关于这个主题有很多问题,但我无法将我的代码(由于语法问题等)转换为正确的格式。所以这是关于我的具体实例的问题。
我在 "lib" 文件夹下的 init.js 中有一些代码,用于从 web3/ethereum 包中获取一个事件并将其存储在一个集合中。请注意,该问题纯粹是一个 Meteor 问题。我已经包含了关于 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.
错误。通常,我会使用 Meteor 方法插入,但我怀疑在实际执行插入时会遇到相同的错误。
关于 Whosebug 上的这个错误有很多问题,但我还没有真正能够在 fiber 中正确获取我的代码。我试图在这里遵循这个例子,但我认为这只是超越我对 Meteor 的理解的方式: https://meteorhacks.com/fibers-eventloop-and-meteor/
直接替换
events.watch(function(error, event) {
...
});
与
events.watch(Meteor.bindEnvironment(function(error, event) {
...
}));
Meteor.bindEnvironment
确保包装函数在纤程内运行。