2

コレクション内のエントリを取得しようとしています:

client/views/home.js :

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

しかし、私はエラーが発生しています:

Uncaught TypeError: Cannot read property 'value' of undefined

ブラウザ コンソールでコードを実行すると、目的の値が文字列として返されます。

私はさまざまなことを試しfindOneました。アプリ内の別の場所にコードを配置する。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
  }
}));

両方/コレクション/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(); }); ```

誰が何が起こっているのか知っていますか?ありがとう。

4

1 に答える 1

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);
        }
    }
});
于 2016-02-09T19:03:45.297 に答える