Meteor.Collection 与 Meteor.bindEnvironment

标签 meteor node-fibers

当我运行 <collection>.find ({}) 时,在 Meteor.binEnvironment 中已经存在的函数中,我收到错误 throw new Error ('Can \' t wait without a fiber '); 如果您也在 Meteor.bindEnvironment(<collection>.find ({})) 内调用该电话,错误消息变为:throw new Error (noFiberMessage);

有问题的函数贯穿 Meteor.methods ({}) 我哪里出错了?

重现错误的示例:

Meteor.methods({
  "teste" : Meteor.bindEnvironment(function(){
    var Future = Meteor.require('fibers/future');
    var future = new Future();
    setTimeout(function(){
      return future.return(Sessions.findOne({}))
    }, 15000);
    console.log('fut', future.wait());
  })
});

最佳答案

尝试改用Meteor._wrapAsync

这是异步函数的示例,但任何其他函数都可以:

var asyncfunction = function(callback) {
    Meteor.setTimeout(function(){
        callback(null, Sessions.findOne({}))
    }, 15000);
}

var syncfunction = Meteor._wrapAsync(asyncfunction);

var result = syncfunction();

console.log(result);

您可以包装任何异步函数并使其同步,并以这种方式将纤程与其绑定(bind)。

关于Meteor.Collection 与 Meteor.bindEnvironment,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22134897/

相关文章:

node.js - 使用 npm 模块 activedirectory 时出错 : "TypeError: activedirectory is not a constructor"

node.js - 安装Fibers@2.0.2时出错

javascript - Meteor wrapAsync/Node Fiber Future 不工作

node.js - Node 光纤会破坏 Node 域吗?

javascript - 刚接触 Mongo/Node/Meteor,想知道为什么 Meteor 没有获取任何数据?

meteor - 如何在 Meteor 中限制到管理员用户的路由?

javascript - 当路由不存在时,iron-router 渲染 notFound 模板

javascript - 尝试逐行解析 csv 时出现 "No fiber running"

javascript - 如何将值从一个属性传递到同一集合的另一个属性?