2016-05-18 7 views
0

Dieser Fehler ist super wacky. Es scheitert nicht immer, aber wenn es so aussieht, sieht es so aus.Mongoose ValidationError Pfad erforderlich, der sich außerhalb der Filialgrenzen des Filialdokuments befindet

Ich habe einige Code, der den "Code" (eine Zeichenfolge) von Elementen in einem Filialdokument-Array ändert. Es durchläuft jedes Ziel, prüft, ob eine Änderung angewendet werden muss, und wenn ja, wendet es an.

for (i = 0; i < user.goals.length; i++) { 
    if (transformsMap[user.goals[i].code]) { 
    user.goals[i].code = transformsMap[user.goals[i].code] 
    } 
} 
user.goals.sort(function (a,b) {return a.code.charCodeAt(0) - b.code.charCodeAt(0)) 

Als ich es speichern, manchmal bekomme ich einen Fehler wie folgt aus:

'goals.3.code': 
    { [ValidatorError: Path `code` is required.] 

... aber 3 in diesem Fall ist die Länge der Ziele Array. dh gibt es keine Ziele.3 Filialdokument. Ich habe versucht, und user.goals.length direkt vor der Validierung zu protokollieren und sie stimmen überein, dass es nur 3 Elemente im Array gibt.

Ich bin total verwirrt.

+3

Leider, es wird hart sein, zu helfen, wenn Sie ein [MCVE] zur Verfügung stellen können. – JohnnyHK

Antwort

0

Wie wäre es mit weiteren Prüfungen? Und auch einen Standardwert einstellen, wenn die if-Klausel fehlschlägt?

for (i = 0; i < user.goals.length; i++) { if (user.goals[i] && user.goals[i].code && transformsMap[user.goals[i].code]){ user.goals[i].code = transformsMap[user.goals[i].code] } else { user.goals[i].code = "" // Whatever this is <-- default value. } } user.goals.sort(function (a,b) {return a.code.charCodeAt(0) - b.code.charCodeAt(0))

+0

Ich habe Prüfungen hinzugefügt, und die Überprüfung direkt vor dem Speichern ergibt, dass nur noch 3 Elemente im Array vorhanden sind und das Problem mit dem vierten auftaucht. – MalcolmOcean

Verwandte Themen