2016-07-14 18 views
0

Ich versuche, einen Wert zu setzen Werte unter Verwendung von Autowert basierend auf bereits gespeicherte ich Meteor bin mit 1.3.4.1Autowert funktioniert nicht, wenn Sie zu validieren gegen mongodb Sammlung Felder

Dies verwendet in Meteor arbeiten 1.1.0.2

mein Code

hier:

id: { 
    type: String, 
    label: "ID", 
    autoValue: function() { 
     var isFirstTime = this.field("profile.isFirstTime").value; 
     var isApproved = this.field("profile.changesApproved").value; 
     var value = this.field("profile.unapproved_id").value; 
     var userId = this.userId; 
     var user = Meteor.users.findOne({_id: userId}); 
     if (user && user.profile && user.profile.id) 
     { 
      return user.profile.id; 
     } 
    } 
} 

I-Wert von user.profile.id erwarte zurückgegeben werden, da user.profile.id einen Wert in der Benutzer-Kollektion hat, aber ich bekomme einen Wert, der aus Eingabefeld übergeben wird . Wie bekomme ich einfach-Schema, um Sammlung Werte zu bemerken, wie es auf Meteor 1.1.0.2

Antwort

0

Ich denke, der verwirrende Teil hier ist das Schlüsselwort 'this'. Im Kontext der autoValue-Funktion() kann dies das Objekt selbst sein, es sei denn, ein anderer Kontext ist durch SimpleSchema daran gebunden.

So würde vorschlagen, verfolgen Sie den Code mit Debugger und prüfen, was ist der Wert von diesem. Wenn es nicht das ist, was Sie denken, überprüfen Sie, wo es definiert ist

+0

Es gibt kein Problem mit dem Objekt 'this'. Das Problem, das ich erlebe, ist mit der if-Anweisung. Ich verfolgte den Code mit dem Debugger und es scheint, den Wert in user.profile.id zurückzugeben, aber wenn Verarbeitung endet, hat ID nicht den Wert in user.profile.id. Es hat den Wert in der Eingabe erfasst –

+0

dann müssen Sie möglicherweise AutoForm-Hooks anstelle von AutoValue: mit 'Autoform.hooks ({" id_of_form ": {vor: {Methode: Funktion (doc) {..Ihr Code hier} }}); 'Sie können das Dokument zwischen der Einreichung durch den Benutzer und der Übergabe an den Server manipulieren. – MrE