복붙노트

[MONGODB] 유성 수집의 정렬 순서를 업데이트하지 않습니다 구독

MONGODB

유성 수집의 정렬 순서를 업데이트하지 않습니다 구독

// Snippet from Template
<div class="post-container">
  {{#each elements}}
    {{> post-element this}}
  {{/each}}
</div>

// Snippet from Client 
Meteor.subscribe('thePosts');

// Snippet from Server
Meteor.publish('thePosts', function(){
  return Posts.find({},  {sort:{createdAt:-1}, reactive:true});
});

나는 할 때 ...

Posts.insert({body:postBody, createdAt: new Date()});

내 게시 기능에 지정된 내림차순 반대로 포스트 문서, 내 목록의 끝에 추가하고 나타납니다됩니다. 내가 잘못을하고있는 중이 대해 어떤 생각?

감사!

해결법

  1. ==============================

    1.레코드는 모든 구독 클라이언트의 미니 몽고 데이터베이스에 동기화해야 함수를 결정을 게시 할 수 있습니다. 게시 기능으로 데이터를 정렬 그래서 실제로 가능성이 다른 방법에 저장됩니다 클라이언트 측 데이터베이스와 클라이언트에 아무런 영향을주지 않습니다.

    레코드는 모든 구독 클라이언트의 미니 몽고 데이터베이스에 동기화해야 함수를 결정을 게시 할 수 있습니다. 게시 기능으로 데이터를 정렬 그래서 실제로 가능성이 다른 방법에 저장됩니다 클라이언트 측 데이터베이스와 클라이언트에 아무런 영향을주지 않습니다.

    물론 당신은 N 가장 최근에 레코드의 수를 제한하기 위해 게시자의 발견으로 정렬 사용할 수 있습니다 -하지만 다시는 단지 기록이 동기화 된 결정의 방법 및하지 그들이에서 사용 / 저장되는 방법 클라이언트.

    레코드가 클라이언트에 동기화 된 후에는 결과가 표시되는 방법을 결정하기 위해 템플릿 코드까지입니다. 예를 들면 :

    Template.myTemplate.elements = function() {
      return Posts.find({}, {sort: {createdAt:-1}});
    }
    

    또한 일반적인 실수에 내 게시물의 "게시 분류"절을 참조하십시오.

  2. ==============================

    2.당신은 당신의 템플릿 도우미 코드를 게시하지 않았다.

    당신은 당신의 템플릿 도우미 코드를 게시하지 않았다.

    당신이 도우미 함수에서 Posts.find ()를 호출 할 때 쿼리는 아래와 같이 같은 종류의 인수를 포함해야합니다 :

    Template.myTemplate.elements = function(){
       Meteor.subscribe('thePosts');
       return Posts.find({},  {sort:{createdAt:-1}, reactive:true});
    }
    
  3. from https://stackoverflow.com/questions/15153349/meteor-subscribe-doesnt-update-sort-order-of-collection by cc-by-sa and MIT license