我已经有了这条基本路线,而且我的模板没有收到我正在设置的数据。
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
变量未定义。有什么想法吗?
答案 0 :(得分:0)
看起来你在同一个后端集合(“帖子”)上有两个出版物(“帖子”和“帖子”)。据我所知,这是不可能的,因为客户端集合需要匹配服务器端的集合名称。您发布它的名称并不重要。
这也在http://docs.meteor.com/#meteor_publish的“按房间计算”示例中进行了解释。
这引发了一个问题,为什么你要首先发布所有帖子,然后发布其中的一部分。那你不能在客户端做那个子集吗?