Я использую Backbone.js для проецирования профилей, поэтому я могу просматривать данные, принадлежащие/пользователю, и эта часть работает нормально. Я могу сгенерировать _id на основе имени пользователя и передать его в функцию публикации сервера, которая регистрирует ее. Тем не менее, когда я вхожу результаты обратно клиенту в функции подписки, мой результат выглядит следующим образом:Meteor Опубликовать возврат пустого курсора
Object {STOP: функция, готова: функция}
//Client Side
Template.userquery.userproject = function() {
var query = Session.get('userquery');
var user = Meteor.users.findOne({username: query});
if (user) {
console.log(user._id); //(works)
campaigns = Meteor.subscribe('userquery', user._id, function() {
console.log('ready'); //(works)
});
console.log(campaigns); //(returns Object {stop: function, ready: function})
return campaigns;
}
}
//Server Side
Meteor.publish('userquery', function(userid) {
console.log('break');
console.log(userid); //(I get userid in Terminal)
var campaigns = Campaigns.find({owner: userid}, {fields: {owner: 1, name: 1}});
if (campaigns) {
console.log(campaigns);
return campaigns;
}
});
я упускаю что-то в этой функции ? У меня отключена автоматическая публикация, потому что она генерирует мой поиск дважды.
ОК, похоже, мне нужно вернуться через готовый метод? –
Опубликовать не возвращает курсор, он дает вам дескриптор, который вы можете использовать для остановки или перезапуска подписки. Чтобы использовать данные, просто вызовите свой «Campaigns.find», как обычно, до тех пор, пока его после завершения подписки, где вы говорите «готово» (по времени не кодовое) – Akshat