Pregunta

He leído esto Los ayudantes de la plantilla de meteorito se disparan varias veces e intenté reproducir esto sin ninguna colección involucrada.

Entonces obtuve una ayuda como esta:

Template.myTemplate.helpers({
    test: function(){
        console.log("Fired");
        return {
            name : "Foo"
        };
    }
});

Y la plantilla se ve así:

<template name="myTemplate">
    {{test.name}}{{test.name}}
</template>

En la consola esperaba ver "Despedido" solo una vez, pero ¿en realidad se llama al ayudante dos veces?Entonces, si mi ayudante accede a la colección y obtiene datos de allí, ¿cada vez que uso {{helper.key}} realiza una consulta?¿Es así como debería funcionar?

¿Fue útil?

Solución

Sí, tienes razón, el sistema de plantillas llamará a un ayudante cada vez que lo uses en tu plantilla.

Supongo que lo que estás preguntando es si esto es eficiente para las colecciones, ya que se llaman una y otra vez.

Por eso los meteoritos .find() devuelve un cursor que es una especie de caché.Puedes ver esto si intentas encontrar algo con .find(), obtendrías un objeto pero no tus datos.El cursor solo recupera datos cuando es necesario, por lo que no es tan ineficiente como puede parecer.

Anexando .fetch() en realidad recupera los datos y no usa este caché, por lo que es menos eficiente y a menudo se sugiere no usarlo como caché. return valor del ayudante.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top