2016-09-30 3 views
0

Wie kann ich ein bestimmtes Feld aus der Benutzersammlung des Kontenmoduls von Meteor überprüfen?Zugriff auf eine Sammlung von Auflösung

den nächsten Code Gesetzt:

$stateProvider.state('myState', { 
    resolve:{ 
    function($q) { 
     if(Meteor.userId()){ 
     return $q.resolve(); 
     } 

     else { 
     retrun $q.reject(); 
     } 
    } 
    } 
}) 

Innerhalb der Lösung ist es möglich, die Meteor.userId() Funktion zu verwenden, um die _id vom Benutzer abgerufen werden, aber ich kann die Meteor.user() Funktion in in der gleichen Weise. Wie kann ich benutzerdefinierte Daten aus dieser Sammlung aus dem Entschluß

+0

aussehen Warum können Sie nicht 'Meteor verwenden. user() 'auf die gleiche Weise? Liefert diese Funktion nicht das gesamte Benutzerobjekt zurück? – lucasnadalutti

+0

Ja, sollte es, oder zumindest denke ich es sollte aber ... Es hat vielleicht etwas mit der Ausführungsreihenfolge zu tun, in der Angular die Daten lädt. – 2JN

Antwort

0

Dies ist ein wenig schwierig, aber lösbar mit diesem Code in Ihrem Zustand abrufen:

resolve: { 
    currentUser: ($q) => { 
     var deferred = $q.defer(); 

     Meteor.autorun(function() { 
      if (!Meteor.loggingIn()) { 
       if (Meteor.user() == null) { 
        deferred.reject('AUTH_REQUIRED'); 
       } else { 
        deferred.resolve(Meteor.user()); 
       } 
      } 
     }); 

     return deferred.promise; 
    } 
} 

Dadurch wird sichergestellt, dass die Route nicht bis zur Meteor löst .user() - Datensatz wird geladen, und wenn er nicht angemeldet ist, weist er die Route zurück. Es dauerte eine Weile, um dies zu finden, aber es ist ein echtes Juwel jetzt :)

+0

Vielen Dank für Ihre Antwort, ich habe versucht, es in meinen Code zu implementieren, aber es löst die Ansicht nicht, können Sie diesen Kern überprüfen und sehen, ob ich etwas falsch mache? https://gist.github.com/2JN/31bbe6589c450b1df5eadc025d4da06e – 2JN

+0

Ich denke, Ihr Helfer falsch ist: – Mikkel

+0

Statt usuario() sollten Sie usuario haben: – Mikkel

0

vom Kern Im Anschluss an ist der Code unten, wie meine Helfer

this.helpers({ 
    member:() => Members.findOne({mid: Meteor.userId()}), 
    currentUser:() => { 
     return Meteor.user(); 
    }, 
+0

Ist es möglich, auf einen Helfer außerhalb der Klasse zuzugreifen? – 2JN

+0

Auch ich merke, was ich falsch gemacht habe, es scheint, dass die Funktion in der Lösung eine Pfeilfunktion sein muss :( – 2JN

Verwandte Themen