MongoDB
 sql >> Base de Dados >  >> NoSQL >> MongoDB

Meteor:Tracker.autorun / observeChanges &collections não funcionam como esperado


Parece que você entendeu o problema, agora vamos pegar algumas soluções possíveis.

Meteor versão 1.1

Se você estiver usando o novo meteoro versão 1.1 (você pode verificar executando meteor --version )

usa isto.

Primeiro no onCreated função use isso.
Template.progressBar.onCreated(function () {
  var self = this;

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

Veja mais sobre subscriptionReady no DOCS.Agora no HTML usar assim.
<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>

Meteor abaixo de 1.0.4

Você pode ter no roteador algo como um waitOn:function(){}
waitOn:function(){
  Meteor.subscribe("Progress");
}

ou já que o helper é assíncrono faça algo assim (não recomendável).
Template.progressBar.helpers({
  curValue: function () {
    query = Progress.findOne({user: Meteor.userId()}).curValue;
    if(query != undefined){
      return query;
    }else{
     console.log("collection isn't ready")
    }
  }
});