javascript - 在帮助程序之外未定义的客户端上获取 meteor

标签 javascript meteor collections simple-schema

我正在尝试获取集合中的一个条目:

client/views/home.js:

criticalCrewNumber = ConfigValues.find({
  name: 'criticalCrewNumber'
}).fetch()[0].value;

但是我得到了错误:

未捕获的类型错误:无法读取未定义的属性“值”

如果我在浏览器控制台中运行代码,所需的值将作为字符串返回。

我尝试过各种方法,例如使用 findOne;将代码放在应用程序的其他位置;使用 iron-router waitOn 进行订阅,等等。到目前为止,每次尝试都失败了,因为我以 undefined 结束。

以下是集合的定义、发布和订阅方式:

lib/config/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
  }
}));

both/collections/eventsCollection.js:

if (Meteor.isClient) {
  Meteor.subscribe('events');
  Meteor.subscribe('config');
};

server/lib/collections.js

``` Meteor.publish('事件', function () { 返回 Events.find(); });

Meteor.publish('config', function () { 返回 ConfigValues.find(); }); ```

有人知道这是怎么回事吗?谢谢。

最佳答案

考虑使用 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);
        }
    }
});

关于javascript - 在帮助程序之外未定义的客户端上获取 meteor ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35227452/

相关文章:

javascript - 解码 xml 并渲染回 Canvas 图形单元格后未在 mxgraph 中显示

javascript - 碰到 Canvas x 边框时向后移动一个圆圈

python-3.x - 方法 createIndex() 不可在集合上调用

c# - 如何将EventsTab插入PropertyGrid?

javascript - 停止或反向突出显示单击的 Vuetify v-tab 项目

javascript - 搜索 Html 表格并在不刷新的情况下显示结果

javascript - 错误 : [$compile:tplrt] Template for directive 'checkNav' must have exactly one root element

javascript - 如何在 Meteor.js 中包含第 3 方 javascript 库?

javascript - Angular Material 和 meteor 的控制台错误

java - 素数集合 - countPrimesSmallerThanX