2013-09-25 7 views
0

같은 주제에 대해 최근의 또 다른 질문이 있습니다 (후자의 경우 : Meteor.js Publishing and Subscribing?).Meteor.js 게시 및 구독 2

테스트 유성 사이트가 있습니다. 무슨 일이 있었는지

/** 
* Models 
*/ 

Posts = new Meteor.Collection('posts'); 


posts = Posts; 

if (Meteor.isClient) { 

    Meteor.subscribe('posts'); 

} 

if (Meteor.isServer) { 

    Meteor.publish('posts', function() { 
     return posts.find({}, {time:-1, limit: 100}); 
    }); 


    posts.allow({ 

     insert: function (document) { 
      return true; 
     }, 
     update: function() { 
      return false; 
     }, 
     remove: function() { 
      return false; 
     }, 

    }); 

} 

내가 편집 작성, 그리고 그것은 작동이 중지 : 나는 루트 디렉토리의 파일에 다음과 같은 한 (dev에에 서버 :. 로컬 호스트 : 3000). 나는 편집을 되 돌렸다. 그러나 더 이상 작동하지 않기 때문에 뭔가 바뀌 었다고 생각한다.

클라이언트는 컬렉션 (게시물로드 목록)에 대한 액세스 권한을 가지므로 문제는되지 않습니다.

두 번째로 클라이언트가 게시물을 제출하면 목록에 잠깐 나타납니다. 그런 다음 사라집니다.

클라이언트가 게시 권한을 갖고 있지 않을 때와 비슷한 동작을하는 것처럼 보이지만 위와 같이 볼 수 있습니다.

Chrome에서 JS Console로 이동할 때 '액세스 거부'또는 오류가 표시되지 않습니다.

콘솔에서 '게시물 추가'를 시도하면 같은 종류의 동작이 발생합니다. 깜박임이 사라졌습니다.

무슨 일 이니? 그냥 이상한 유성 결함일까요? 어떤 도움을 주셔서 감사합니다.

편집

확인, 내부 유성 결함 명확하게 어떤 종류의; "유성 재설정 (meteor reset)"은 코드 자체에서 NO CHANGE의 문제를 수정했습니다.

그래서 문제가 해결 된 것 같습니다.

편집 2

안돼. 문제가 해결되지 않았습니다. 그것은 다시 나타났다.

게시물 수가 특정 임계 값에 도달하면이를 거부하는 것처럼 보입니다.이 임계 값은 "제한"과 관련이 있다고 생각합니다.

어떤 도움이 필요합니까?

답변

0

클라이언트가 로컬 캐시에 100 개의 게시물을 가지고 있다고 가정합니다. 그런 다음 클라이언트가 새 게시물을 삽입하면 클라이언트 캐시에 직접 삽입되어 (이제는 101 개의 게시물이 포함됨) 백그라운드에서 서버로 전송됩니다. 서버는이를 실제 데이터베이스에 삽입 한 다음 캐시에 100 개의 게시물 만 저장해야하기 때문에 캐시 된 게시물 중 하나를 제거하도록 클라이언트에 알립니다. 이것은 아마도 당신에게 일어나는 일입니다.

+0

아주 좋았지 만, 이것이 사실이라면 페이지를 새로 고치지 않아도 제한에 도달하기 전에 게시 된 게시물 대신 이전에 게시 된 게시물이 표시됩니까? – Aristides

+0

@Aristides 만약 당신이 그런 식으로 게시물을 주문하면 (그리고 새로 고침이 필요 없을 수도 있습니다.) 당신이 말하는 것은 사실입니다. 하지만 브라우저의 자바 스크립트 콘솔에서'Posts.insert ({whatever})'를 실행하면 삽입이 실패했다는 오류 메시지가 나타 납니 까? 또는 언제 오류 메시지가 나타 납니까? 컬렉션에 거부 규칙이 있습니까? –

+0

아니요, 삽입하지 못한 오류 메시지는 표시되지 않습니다 (실제로는 오류 메시지가 표시되지 않습니다). 클라이언트는 업데이트 만 추가하거나 업데이트 또는 삭제할 수 없습니다. 하지만 추가 기능이 작동하지 않습니다 (100 개 항목 이상인 경우). – Aristides