2015-07-09 2 views
2

Я использую метеор + угловатые, я публикую некоторые данные, и я должен подписаться, но когда я console.log его, результат []в метеор, как можно использовать данные с подписки и я могу утешить его

это мои данные в MongoDB

meteor:PRIMARY> db.site.find() 
{ "_id" : "5wGu3EcSis9GJGmkf", "name" : "cc", "age" : 12 } 
{ "_id" : "jEboHgEF4Hvp5rpg7", "name" : "bob", "age" : 20 } 

и я делаю это в server.js

3 Meteor.publish('sitelist', function() { 
    4 ┊ return CheckSite.find(); 
    5 }); 

я могу получить что-то в консоли Хрома

CheckSite.find().fetch() 
[Object_id: "5wGu3EcSis9GJGmkf"age: 12name: "cc"__proto__: Object, Object_id: "jEboHgEF4Hvp5rpg7"age: 20name: "bob"__proto__: Object 

Я подписываюсь его в client.js:

4 ┊ $meteor.subscribe('sitelist'); 
    5 ┊ console.log(CheckSite.find().fetch()); 

, как это, я утешаю, но это просто [] в консоли
Почему , Что делать, если я $meteor.subscribe('sitelist')?

+0

Где вы определяете коллекцию 'CheckSite'? В файле клиента, файле сервера или обоим? – Xinzz

+0

Я определяю коллекцию в '/ lib/connection.js', а код -' CheckSite = new Mongo.Collection ('site') – nataila

+0

Вам нужно дождаться завершения подписки (для того, чтобы клиент загрузил все данные коллекции). – fuzzybabybunny

ответ

0

Это регистрационный номер [], потому что подписка еще не готова. Чтобы выяснить, когда подписка готова, вы должны передать ей функцию обратного вызова. Затем в вашем обратном вызове выполняйте код, который зависит от подписки.

$meteor.subscribe('sitelist', function(error, result) { 
    console.log(result.fetch()); 
});