MongoDB
 sql >> Database >  >> NoSQL >> MongoDB

Meteor:Tracker.autorun/osservaChanges e le raccolte non funzionano come previsto

Sembra che tu abbia capito il problema, ora passiamo ad alcune possibili soluzioni.

Meteor versione 1.1

Se stai usando la nuova versione 1.1 di meteor (puoi controllare l'esecuzione di meteor --version )

usa questo.

Prima su onCreated funzione usa questo.

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

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

Ulteriori informazioni su subscriptionReady su DOCS.Ora su HTML usa in questo modo.

<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>

Meteore sotto 1.0.4

Puoi avere sul router qualcosa come un waitOn:function(){}

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

o poiché gli helper sono asincroni, fai qualcosa del genere (non raccomandabile).

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