我在使用 angular-meteor 更新文档中包含的数组时遇到问题。Minimongo 抛出错误documentMatches needs a document
。
更新时引发此错误的文档如下所示。它包含的一件事是一个 s 数组_id
。该数组包含某些特定文档的显示顺序。它看起来像这样:
{
_id:"...",
profileQuestions:{
profileQuestionsOrder:["jqKMp7rzsZApauwYE","jakehILKehpkdhj"]
}
}
我已将其附加$scope.meteorObject
到一个名为$scope.settings
. 当我从这个数组中删除一个项目然后用 保存时.save()
,我得到了错误。有趣的是,当我将一个项目添加到数组中,然后保存时,就没有问题了!我还可以毫无问题地将其他键添加到设置对象。这只是导致问题的数组。
我使用 chrome 的调试器查看抛出错误时发生了什么,下面是抛出错误的代码:
documentMatches: function (doc) {
if (!doc || typeof doc !== "object") {
throw Error("documentMatches needs a document");
}
return this._docMatcher(doc);
},
疯狂的是,doc
这实际上是 profileQuestionsOrder 数组中的第一项——它只是一个包含文档 ID 的字符串。似乎 miniMongo 对这个数组感到困惑。我可以放入任何其他属性,并且没有错误。但是当我从这个数组中删除一个项目时,它就出现了问题。
顺便说一句,当我不将对象保存到数据库时,我可以看到它已正确更改,从数组中拼接了一个元素。