次のようなネストされたデータ構造があるとします。
[
{
"name": "fruits",
"items": [
{ "name": "apple" ...}
{ "name": "lemon" ...}
{ "name": "peach" ...}
]
}
{
"name": "veggies",
"items": [
{ "name": "carrot" ...}
{ "name": "cabbage" ...}
]
}
{
"name": "meat",
"items": [
{ "name": "steak" ...}
{ "name": "pork" ...}
]
}
]
上記のデータは、dojo/store/Memory に配置されます。文字「c」を含むアイテムのクエリを実行したいが、下位レベルでのみ実行したい (カテゴリをクエリしたくない)。
一般的な dojo/store/Memory では、クエリ関数は最上位レベルでのみフィルターを適用するため、コードは
store.query(function(item) {
return item.name.indexOf("c") != -1;
});
実際のアイテムではなく、カテゴリ名 (果物、野菜など) に対してのみクエリを実行します。
子ノードでこのクエリを実行する簡単な方法はありますか?一致する場合は、すべての子と親を返しますか? たとえば、"c" クエリは "fruits" ノードとその子 "peach" のみを返し、"veggies" はそのまま残り、"meat" はクエリ結果から完全に除外されます。