2016-05-18 4 views
0

このエラーは非常に不具合です。それは必ずしも失敗するとは限りませんが、そうすると、このように見えます。Mongoose ValidationErrorサブディレクトリの配列境界外にあるパスが必要です

私は、サブ文書配列内の要素の "コード"(1文字列)を変更するコードをいくつか持っています。それは各目標を通り、適用される変更があるかどうかを確認し、変更があればそれを適用します。

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

私はそれを保存すると、時々私はこのようなエラーが出る:

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

...しかし、この場合3ゴール配列の長さです。すなわちは目標がありません.3サブ文書。検証の前にログuser.goalsuser.goals.lengthを記録しようとしましたが、どちらも配列に3つの要素しかないことに同意します。

私は完全に困惑しています。

+3

残念ながら、あなたが[MCVE]を提供することができない限り、支援するために厳しいものになるだろう。 – JohnnyHK

答えて

0

チェックを追加するのはどうですか?また、if節が失敗した場合にデフォルト値を設定しますか?

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

私は小切手を追加しました。保存する直前のチェックでは、まだ3つのアイテムしか配列に残っておらず、問題は4番目に表示されます。 – MalcolmOcean

関連する問題