MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

Meteor:Tracker.autorun/beobachtenÄnderungen und Sammlungen funktionieren nicht wie erwartet

Sieht so aus, als ob Sie das Problem verstanden haben, lassen Sie uns nun zu einigen möglichen Lösungen fahren.

Meteor-Version 1.1

Wenn Sie die neue Meteor Version 1.1 verwenden (Sie können die Ausführung von meteor --version überprüfen )

Verwenden Sie dies.

Zuerst auf onCreated Funktion verwenden.

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

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

Weitere Informationen zu subscriptionReady im DOCS.Now im HTML wie folgt verwenden.

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

Sie können auf dem Router so etwas wie waitOn:function(){} haben

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

oder Da Hilfsprogramme asynchron sind, tun Sie so etwas (nicht empfehlenswert).

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