Вы подписались на 'Followers'
, но подписка может быть еще не готова.Код после Meteor.subscribe('Followers');
, скорее всего, пока не найдет документ.
Чтобы узнать, готова ли ваша подписка, вам нужно проверить метод ready()
в дескрипторе подписки:
const followersSub = Meteor.subscribe('Followers');
if (followersSub.ready()) { // followers collection has been synced with client
var follower = Followers.findOne(
{userID : this.props.task._id, followedID: Meteor.userId()},
{ sort: { createdAt: -1 }}
);
console.log('Follower matched', follower); // should be present now
console.log('Follower Id', follower._id);
}
Используйте withTracker для отслеживания состояния подписки
Теперь, как ваш код "ждет", пока ready()
не станет истинным значением?Поскольку дескриптор подписки является реактивной переменной, вы будете использовать Tracker
, чтобы «отслеживать» изменение внутреннего состояния подписки и действовать в соответствии с изменениями.В компоненте Meteor-React withTracker
он встроен по умолчанию.
В справочнике Meteor на withTracker
это объясняется подробно.Если вы будете следовать руководству и применять его к своему коду, вы сможете успешно подписаться на свои документы.