客户端上的流星提取未在助手

时间:2016-02-05 15:13:48

标签: javascript meteor collections simple-schema

我正在尝试使用以下内容获取集合中的条目:

客户端/视图/ 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();     }); ```

有谁知道发生了什么事?感谢。

1 个答案:

答案 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);
        }
    }
});