2014-01-15 2 views
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 

data 방법 내부 p 변수는 정의되지 않습니다. 어떤 아이디어?

답변

0

두 개의 게시물 ("posts"및 "post")이 동일한 백엔드 컬렉션 ("posts")에있는 것 같습니다. 클라이언트 측 컬렉션은 서버 측 컬렉션 이름과 일치해야하기 때문에 가능하지 않다는 것을 알고 있습니다. 당신이 그것을 출판하는 이름은 그다지 중요하지 않습니다.

http://docs.meteor.com/#meteor_publish의 "카운트 별"예에서도 설명합니다.

이렇게하면 모든 게시물을 먼저 게시 한 다음 그 게시물의 하위 집합을 게시하는 이유가 생깁니다. 그러면 클라이언트에서 하위 집합 만 할 수 있습니까?

+0

나도 똑같은 질문을하는 것에 동의한다. https://www.eventedmind.com/feed/q8QWX5e7PTu8BEReY (분 12 체크) –

+0

동일한 컬렉션에 대해 여러 가지 게시 기능을 사용할 수 있습니다. 사실 하나의 게시물을 보려면 전체 컬렉션을 게시 할 필요가 없으므로 대부분의 경우에 사용해야합니다. 문제가 게시 함수에 있다고 생각되면 콘솔에서 Posts.find(). fetch()를 실행하여 반환되는 내용을 확인하십시오. 문제가 경로에있는 경우 출력이 표시됩니다. :) –

+0

나는 당신의 조언을 따라 이상한 것을 보았습니다. 게시물을 업데이트하고'Posts.find(). fetch()'를 호출하면 내 게시물을 반환하지만 내가 편집 한 게시물에는 이전 데이터 (편집하지 않은 상태)가 계속 포함됩니다. mongodb 데이터베이스를 검사하면 변경 사항이 제출되어 내 클라이언트가 어떤 이유로 업데이트되지 않고 내 클라이언트가 이전 데이터를 보유하고 있기 때문에 새로운 슬러그로 리디렉션 할 수 없습니다. 나는 게시 코드를 제거했고, 지금은'posts'에 가입했지만이 문제와 관련하여 여전히 행운이 없습니다. –