所以我试图将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);
有谁知道这里发生了什么? 提前谢谢。
答案 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;
}
});