我正在尝试使用以下内容获取集合中的条目:
客户端/视图/ home.js :
criticalCrewNumber = ConfigValues.find({
name: 'criticalCrewNumber'
}).fetch()[0].value;
但我收到错误:
Uncaught TypeError: Cannot read property 'value' of undefined
如果我在浏览器控制台中运行代码,则会以字符串形式返回所需的值。
我尝试过各种各样的事情,例如使用findOne
;将代码放在应用程序的其他位置;使用铁路由器waitOn
进行订阅等等。到目前为止,每次尝试都失败了,因为我最终得到了undefined
。
以下是集合的定义,发布和订阅方式:
LIB /配置/ admin_config.js :
ConfigValues = new Mongo.Collection("configValues");
ConfigValues.attachSchema(new SimpleSchema({
name: {
type: String,
label: "Name",
max: 200
},
value: {
type: String,
label: "Value",
max: 200
}
}));
两者/集合/ eventsCollection.js :
if (Meteor.isClient) {
Meteor.subscribe('events');
Meteor.subscribe('config');
};
服务器/ LIB / collections.js
``` Meteor.publish('events',function(){ return Events.find(); });
Meteor.publish('config',function(){ return ConfigValues.find(); }); ```
有谁知道发生了什么事?感谢。
答案 0 :(得分:1)
考虑使用ReactiveVar
(以及Meteor.subscribe
回调):
criticalCrewNumber = new ReactiveVar();
Meteor.subscribe('config', {
onReady: function () {
var config = ConfigValues.findOne({name: 'criticalCrewNumber'});
if (config) {
criticalCrewNumber.set(config.value);
} else {
console.error('No config value.');
}
},
onStop: function (error) {
if (error) {
console.error(error);
}
}
});