angular-meteor を使用してドキュメントに含まれる配列を更新する際に問題が発生しています。Minimongo はエラーをスローしますdocumentMatches needs a document
。
更新時にこのエラーをスローするドキュメントを以下に示します。含まれているものの 1 つは、_id
s の配列です。この配列には、特定のドキュメントの表示順序が含まれています。次のようになります。
{
_id:"...",
profileQuestions:{
profileQuestionsOrder:["jqKMp7rzsZApauwYE","jakehILKehpkdhj"]
}
}
$scope.meteorObject
という変数にこれを使用して添付しました$scope.settings
。この配列からアイテムを削除してから保存すると.save()
、エラーが発生します。面白いことに、配列にアイテムを追加して保存すると、問題はありません! 問題なく設定オブジェクトに他のキーを追加することもできます。問題を引き起こすのは配列だけです。
エラーがスローされたときに何が起こっているかを確認するために、クロムのデバッガーを使用しました。エラーをスローするコードは次のとおりです。
documentMatches: function (doc) {
if (!doc || typeof doc !== "object") {
throw Error("documentMatches needs a document");
}
return this._docMatcher(doc);
},
おかしいのは、これdoc
が実際には profileQuestionsOrder 配列の最初の項目であるということです。これは、単にドキュメント ID を含む文字列です。miniMongo がこの配列について混乱しているようです。他のプロパティを入れることができ、エラーはありません。しかし、この配列からアイテムを削除すると、問題が発生します。
ちなみに、オブジェクトを db に保存しないと、正しく変更され、配列から 1 つの要素が接合されていることがわかります。