1

Flow Router とその pub/sub メカニズムを使用するアプリケーションがあります。コレクションとテンプレートのヘルパーもあります。コードは、クライアント上で

Template.theCase.helpers({
    theCase: function () {
        var id = FlowRouter.getParam('id');
        var theCase = Cases.findOne({
            id: id
        });

        return theCase;
    }
});

{{#with theCase}}
  {{ id }}
{{/with}}

その後、サーバー上で

Meteor.publish('theCase', function (id) {
    return Cases.findOne({
        id: id
    });
});

最後に、両方で ( lib)

FlowRouter.route('/case/:id', {
    subscriptions: function (params) {
        this.register('theCase', Meteor.subscribe('theCase', params.id));
    },
    action: function (params, queryParams) {
        return BlazeLayout.render('container');
    }
});

問題は、ヘルパーが を返すことです。undefinedこれは、 以外のプロパティによってコレクション内のアイテムを見つけることが許可されていないため_idです。どうすればそれを克服できますか?pub/sub、ヘルパー、ルーティングに関する公式ドキュメントを大量に読みましたが、解決策が見つかりません。助言がありますか?

4

1 に答える 1

1

任意のフィールドでクエリできます。一致するものが見つからなかったため、ヘルパーは undefined を返します。

このコードには問題があります:

Meteor.publish('theCase', function (id) {
    return Cases.findOne({
        id: id
    });
});

そのはず:return Cases.find({id: id});

パブリケーションはカーソルまたは呼び出しを返す必要がありますthis.ready()

于 2015-09-07T12:23:19.183 に答える