Mongoose ValidationError所需的路径超出子文档数组边界

时间:2016-05-18 03:08:24

标签: node.js mongodb validation mongoose subdocument

这个错误非常古怪。它并不总是失败,但是当它发生时它看起来像这样。

我有一些代码可以改变"代码" (一个字符串)子文档数组中的元素。它遍历每个目标,检查是否有要应用的更改,如果是,则应用它。

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个元素。

我完全不知所措。

1 个答案:

答案 0 :(得分: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))