1

次のようなネストされたデータ構造があるとします。

[
   {  
     "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" はクエリ結果から完全に除外されます。

4

1 に答える 1