Por defecto, cuando un cliente se pone en marcha Meteor, se conecta al servidor y suscribe documentos en cualquier Meteor.Collection
que haya definido. Esto lleva tiempo, ya que siempre hay cierta demora en establecer la conexión del servidor y la recepción de documentos.
Meteor.startup()
en el cliente es muy similar a $()
en jQuery - ejecuta su argumento una vez que el cliente DOM está listo. Hace no espere que las colecciones de su cliente reciban todos sus documentos del servidor. Así que la forma en que escribió el código, la llamada a find()
se ejecutará siempre demasiado pronto y volver 0.
Si quieres que esperar para ejecutar código hasta después de una colección primero se descarga desde el servidor, es necesario utilizar Meteor.subscribe()
a suscribirse explícitamente a una colección. subscribe()
toma una devolución de llamada que se ejecutará cuando el conjunto inicial de documentos esté en el cliente.
Ver:
meteor-publish y meteor-subscribe
concurrencia, bienvenido a la misma. – Raynos
@Raynos No parece un problema de concurrencia. Sucede cada vez que se ejecuta el controlador de arranque del cliente. – pomber
Es un problema de concurrencia, el problema es que ejecuta dos cosas al mismo tiempo una en el servidor y otra en el cliente. y usted espera que el servidor uno termine mágicamente primero – Raynos