Ответ 1
По умолчанию, когда клиент Meteor запускается, он подключается к серверу и подписывается на документы в любом Meteor.Collection
, который вы определили. Это занимает некоторое время, чтобы завершить, так как всегда существует некоторое количество задержек при установлении соединения с сервером и получении документов.
Meteor.startup()
на клиенте очень похож на $()
в jQuery - он запускает свой аргумент, когда клиентская DOM готова. Он не дожидается, когда ваши клиентские коллекции получат все свои документы с сервера. Таким образом, как вы написали код, вызов find()
будет всегда запускаться слишком рано и возвращать 0.
Если вы хотите дождаться запуска кода до тех пор, пока сборка не будет сначала загружена с сервера, вам необходимо использовать Meteor.subscribe()
для явной подписки на коллекцию. subscribe()
выполняет обратный вызов, который будет выполняться, когда исходный набор документов находится на клиенте.
См: