0

以前 orion generate modelは、Events というモデルを作成していました。次に、Mongo DB コンソールでそのモデルに挿入しました。Collection オブジェクトをインスタンス化しようとすると、Events というモデルが既に存在すると言われるため、他の場所からそのモデルにアクセスできません。これは、私の Events.js ファイルが次のようになっているためです。

Events = new Mongo.Collection('Events');

Events.attachSchema(
new SimpleSchema({
    name: {
        type: String
    },
    location: {
        type: String
    },
    dateTime: {
        type: Date
    },
    description: {
        type: String
    },
    eventType: {
        type: String
    },
    createdAt: {
        type: Date,
        denyUpdate: true
    }
})
);

私の header.js ファイルは次のようになります。

var Events = new Meteor.Collection('Events');

if (Meteor.isClient) {
// This code only runs on the client


Template.body.helpers({
    events: function() {
        var evs = Events.find({}, {fields: {'name':1}});
        return Events.find({}, {
            sort: {
                createdAt: -1
            }
        });
    }
});
}

私の質問は基本的に、Events.js で作成された場合、mongo コレクションへの参照を header.js の変数に保存するにはどうすればよいですか? Orion には優れたドキュメント セットがなく、meteors も場所によって不足しているため、これは少し不透明です。

4

1 に答える 1

0

tldr: header.js ファイルから最初の行を削除します

Events モデルが既に存在することを示すトレースバックをより注意深く見ると、header.js ファイルの 1 行目でスローされていることがわかります。これは、このファイルがロードされたときに Events 変数が既に定義されているためです。これは、Events.js で定義されたグローバル変数の名前であり、この現在のファイル (および Events.js が実行されたすべての場所) で既に使用可能であるためです。

ほとんどのプロジェクトのベスト プラクティスは、クライアントとサーバーの両方で実行されるファイルで、コレクションをグローバルに定義することです。その後、他のすべてのファイルは、この変数を使用してコレクションを参照できます。

于 2015-10-08T02:48:40.570 に答える