This error is super wacky. It doesn't always fail, but when it does it looks like this.
I have some code that changes the "code" (a one character string) of elements in a subdocument array. It goes through each goal, checks to see if there's a change to be applied, and if so, applies it.
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))
When I save it, sometimes I get an error like this:
'goals.3.code':
{ [ValidatorError: Path `code` is required.]
...but 3
in this case, is the length of the goals array. ie there is no goals.3 subdocument. I've tried logging user.goals
and user.goals.length
right before validation and they both agree that there are only 3 elements in the array.
I am totally baffled.