无法让meteor.js返回mongo集合

时间:2015-05-07 01:31:01

标签: javascript mongodb meteor

所以我试图将mongoDB数据库值返回到Meteor.js项目中的模板。我正在使用的代码如下。

Template.ResourceManager.helpers({
BoosterOneFuel : function(){
        return resources.findOne({system : "booster1"}).fuel;
}

});

但是,这总是返回null。当我尝试提醒它时,警报还会说该值为空。当我在运行 meteor mongo 时在控制台中运行此行时,Mongo可以找到它:

db.Resources.findOne({system : "booster1"}).fuel;
但是流星不能。 (这是在本地主机上,因此meteor mongo应该影响流星的数据库)

在mongo之前,我不认为它是流星加载的问题,因为以下内容仍然不起作用:

if(resource.find({system : "booster1"}))
     alert(resources.findOne({system : "booster1"}).fuel);

有谁知道这里发生了什么? 提前谢谢。

1 个答案:

答案 0 :(得分:4)

假设该集合实际上被称为resources - 即你有一些看起来像:

resources = new Mongo.Collection('Resources');

然后听起来你只需要将文件发布到客户端:

服务器/ publishers.js

Meteor.publish('resources', function() {
  return resources.find();
});

<强>的客户机/ subscriptions.js

Meteor.subscribe('resources');

当然,订阅可能发生在您的模板或路由器中,而不是全局,但这超出了此问题的范围。

另请注意,您应该向助手添加guard。例如:

Template.ResourceManager.helpers({
  BoosterOneFuel : function() {
    var b1 = resources.findOne({system : "booster1"});
    return b1 && b1.fuel;
  }
});