2016-09-30 7 views
0

カテゴリリストのurlプロパティを含むurl paramsでブログエントリをフィルタリングしようとしています。ファイアベースの並べ替えとフィルタリング

http://example.com/blog.html?filter="foo-bar" 

フィルタのパラメータを持つすべてのエントリをcategoriesの配列のurl値にリストしたいとします。

これはエントリの構成です。

- Title 
    - Content 
    - Categories 
    -[0]{Name: "foo bar", Url: "foo-bar"} 
    -[1]{Name: "Other", Url: "other"} 

これはどのように達成されますか?

私はorderByChild('categories').equalTo(...)といくつかのことを試しましたが、何も機能しませんでした。

答えて

1

Firebaseと他のNoSQLデータベース構造では、並べ替えとフィルタリングに役立つ非正規化と呼ばれる方法があります。基本的な考え方は、特定のタスク用に設計された複数の形式で同じデータを持つことです。あなたはその後、blogEntriesの下に、次に相互参照、それは例えば'foo bar'に一致するすべてのブログのIDを取得するためにblogEntriesByCategories上のデータとそれらのID検索を行うだろう

blogEntries: { 
    blogId1: { 
    Title: '...', 
    Content: '...', 
    Categories: [ 'categoryId1', 'categoryId2', ... ] 
    }, 
    ... more blog entries ... 
} 
blogCategories: { 
    categoryId1: { 
    Name: '...', 
    Url: '...' 
    }, 
    ... more categories ... 
}, 
blogEntriesByCategories: { 
    'foo bar': [ blogId1, blogId5, ... ], 
    'other': [ blogId3 ], 
    ... 
} 

:だからあなたの場合には、あなたはこのような何かを持っているかもしれませんそれぞれのブログIDと一致する。

Firebase 3では、複数のパスに同時に書き込むことができます。したがって、ブログエントリを追加、更新、または削除すると、いつでもblogEntriesByCategoriesが更新されます。このblog entryには、Firebase 3でどのように行われたかを書いてあります。

+0

大きな説明!私はそれを調べます。ありがとう – cerealex

関連する問題