在异步回调上更新Meteor集合

在异步回调上更新Meteor集合,meteor,Meteor,我有一个meteor应用程序,它使用节点模块MQTTClient 每当某个内容发布到客户机订阅的主题时,该客户机都会发送事件 当事件发生时,我想更新集合中的一个条目,但当我这样做时,我会得到断言失败,数据库会损坏 Assertion failed: (handle->InternalFieldCount() > 0), function Unwrap, file ../src/node_object_wrap.h, line 61. Exited from signal: SIGAB

我有一个meteor应用程序,它使用节点模块MQTTClient

每当某个内容发布到客户机订阅的主题时,该客户机都会发送事件

当事件发生时,我想更新集合中的一个条目,但当我这样做时,我会得到断言失败,数据库会损坏

Assertion failed: (handle->InternalFieldCount() > 0), function Unwrap, file ../src/node_object_wrap.h, line 61.
Exited from signal: SIGABRT
Your application is crashing. Waiting for file change.
这就是我目前拥有的:

...

client.connect(function () {
  console.log('connected to MQTT broker');

  Fiber(function(){
    var allTopics = Topics.find({});
    allTopics.forEach(function(topic){
      console.log('subscribing to ' + topic.name);
      client.subscribe(topic.name);
    });
  }).run();

});

var onPublish = function(topicName, payload, message_id) {
  console.log("New message: " + topicName + ":" + payload);
  Topics.insert({name: payload, value: payload});
};

var wrappedOnPublish = Meteor.bindEnvironment(onPublish, function(e){
  var message = "Something went wrong! " +
                "Everything is broken! " + 
                "Your life is ruined!";

  console.log(message, e.stack);
});

client.on('publish', wrappedOnPublish);
我还尝试通过将回调封装在光纤(..).run()中来处理回调,但出现了完全相同的错误