sql >> Base de Datos >  >> NoSQL >> MongoDB

Meteor:Tracker.autorun / observeChanges &collections no funciona como se esperaba

Parece que entiendes el problema, ahora pasemos a algunas posibles soluciones.

Meteorito versión 1.1

Si está utilizando el nuevo meteorito versión 1.1 (puede verificar ejecutando meteor --version )

usa esto.

Primero en onCreated use esta función.

Template.progressBar.onCreated(function () {
  var self = this;

  self.autorun(function () {
    self.subscribe("Progress");
  });
});

Obtenga más información sobre subscriptionReady en DOCS.Ahora en HTML usar así.

<template name="progress">
  {{#if Template.subscriptionsReady}}
      <div id="progress-bar" style="width:{{curValue}}; background-color:*dynamicColor*;"></div>
    {{else}}
       {{> spinner}} <!-- or whatever you have to put on the loading -->
   {{/if}}
</template>

Meteorito bajo 1.0.4

Puede tener en el enrutador algo como waitOn:function(){}

waitOn:function(){
  Meteor.subscribe("Progress");
}

o dado que los ayudantes son asincrónicos, haz algo como esto (no recomendable).

Template.progressBar.helpers({
  curValue: function () {
    query = Progress.findOne({user: Meteor.userId()}).curValue;
    if(query != undefined){
      return query;
    }else{
     console.log("collection isn't ready")
    }
  }
});