2014-04-26 2 views
2

컬렉션에 문제가 있습니다.클라이언트 측의 Meteor collection이 비어 있습니다.

클라이언트 측에서만 비어 있습니다. 다음 내용을 다시 볼 수 있습니다.

MyCollection = new Meteor.Collection("mycollection"); 

if (Meteor.isServer) { 
    var result = MyCollection.find({name: 'MyName'}, {limit: 25}).fetch(); 
    console.log(result); 
} 

if (Meteor.isClient) { 
    var result = MyCollection.find({name: 'MyName'}, {limit: 25}).fetch(); 
    console.log(result); 
} 

결과는 클라이언트가 아니라 서버 코드에서 볼 수 있습니다. 나는 무엇을 놓치고 있습니까?

+2

자동 게시 패키지를 사용하고 있습니까? 없다면 Meteor.publish와 함께 서버에 게시 한 다음 클라이언트 "mycollection"에 가입 했습니까? –

답변

1

autopublish을 삭제하지 않았거나 제대로 게시 및 구독 중이라고 가정하면 서버에서 데이터를 받기 전에 클라이언트 코드가 실행 중일 가능성이 큽니다. 이 시도 :

if (Meteor.isClient) { 
    Deps.autorun(function() { 
    var result = MyCollection.find({name: 'MyName'}, {limit: 25}).fetch(); 
    console.log(result); 
    }); 
} 

당신은 클라이언트에 로그온 한 빈 결과를 얻을 수 있습니다 곧 (클라이언트가 데이터를 수신하고 자동 실행 기능을 다시 실행 후) 올바른 결과 하였다.

+0

Deps 대신 트래커를 사용하여 비슷한 문제를 해결해야했습니다. – alvarez

+0

@alvarez'Deps'의 새로운 이름은'Tracker'입니다. 그 이후로 하위 호환성을 제거했을 수 있습니다. – sbking

관련 문제