MongoDB
 sql >> Base de données >  >> NoSQL >> MongoDB

Meteor :Tracker.autorun / observeChanges &collections ne fonctionne pas comme prévu

Il semble que vous ayez compris le problème, passons maintenant à quelques solutions possibles.

Météore version 1.1

Si vous utilisez le nouveau météore version 1.1 (vous pouvez vérifier l'exécution de meteor --version )

utilisez ceci.

D'abord sur onCreated fonction utilise ceci.

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

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

En savoir plus sur subscriptionReady sur le DOCS.Maintenant sur le HTML utiliser comme ça.

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

Météore sous 1.0.4

Vous pouvez avoir sur le routeur quelque chose comme un waitOn:function(){}

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

ou puisque les assistants sont asynchrones, faites quelque chose comme ça (non recommandé).

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