1

この基本的なルートを用意しましたが、テンプレートは設定しているデータを受け取りません。

App =
    subs:
        posts: Meteor.subscribe "posts"
        users: Meteor.subscribe "users"

Router.configure
    wait: [App.subs.posts, App.subs.users]
    loadingTemplate: 'loading'

Router.map ->
    @route 'post_show',
        path: '/p/:slug'
        before: ->
            if App.subs.post
                App.subs.post.stop()
            App.subs.post = Meteor.subscribe "post", @params.slug

        waitOn: ->
            App.subs.post

        after: ->
            if @getData().post
                document.title = @getData().post?.title

        data: ->
            p = Posts.findOne
                $or: [{
                    slug: @params.slug
                }, {
                    _id: @params.slug
                }]

            date = new Date p.timestamp
            date_added = "{0}-{1}-{2}".format date.getFullYear(), date.getMonth()+1, date.getDate()

            data =
                post: p
                date_added: date_added
            data
        template: 'post_show'

サーバーコード:

Meteor.publish "posts", ->
    return Posts.find()

Meteor.publish "post", (id_or_slug) ->
    return Posts.find({
        $or: [{
            slug: id_or_slug
        }, {
            _id: id_or_slug
        }]
    })

Meteor.publish "userData", ->
    return Meteor.users.find {},
        fields:
            profile: 1

ページを更新すると、メソッドp内の変数dataは未定義です。理由はありますか?

4

1 に答える 1

0

同じバックエンド コレクション ("posts") に 2 つの出版物 ("posts" と "post") があるようです。クライアント側のコレクションはサーバー側のコレクション名と一致する必要があるため、私が知る限り、それは不可能です。公開する名前はそれほど重要ではありません。

これは、 http://docs.meteor.com/#meteor_publishの「部屋ごとのカウント」の例でも説明されています。

これにより、なぜ最初にすべての投稿を公開し、さらにそのサブセットを公開するのかという疑問が生じます。その場合、クライアントでそのサブセット化を行うことはできませんか?

于 2014-01-15T17:34:36.370 に答える