Структурирование данных в Firebase для нескольких хэштегов во время анализа при переносе Firebase

Данные Firebase структурированы как JSON. В соответствии с лучшей практикой мы должны создать денормализованную форму данных. Мы должны помещать одни и те же данные в разные узлы. Согласно их документации, можно дублировать данные в другой ветке.

Как мне структурировать эти данные в Firebase?

Я пишу приложение для блогов, которое было в PARSE и хочет перейти на Firebase .

Каждый мой блог имеет разные хэш-теги. Эти хэштеги кликабельны. Поэтому, когда мы нажимаем на определенный хэш-тег, он будет перенаправлен на страницу с обычными блогами с такими же хэш-тегами.

Как мы представляем концепцию поведения хеш-тегов в Firebase? Как структурировать данные, чтобы я мог запросить все блоги для определенного хэштега?

лайк select * from [blogs] where tag = '#hashtag'

2 ответа

Попробуй это

blogs
  blog_01
    hashtag:"#hashtag"
    data: "some data"
  blog_02
    hashtag: "#anotherHashtag"
    data: "more data"
  blog_03
    hashtag: "#superHashtag"
    data: "another data"

и код

ref = rootRef.childByAppendingPath("blogs")
ref.queryOrderedByChild("hashtag").queryEqualToValue("#anotherHashtag")
            .observeEventType(.Value, withBlock: { snapshot in

        //.Value can return multiple nodes within the snapshot so iterate over them
        for child in snapshot.children {
            let hash = child.value.objectForKey("data") as! String
            print(hash) //prints 'more data'
        }  

})

Изменить: Это код OS X Swift, но вы можете получить общее представление о том, как он применяется на разных платформах.

Я думаю, что Firebase хочет, чтобы вы сделали что-то похожее на это:

{
  "blogs": {
    "blog1": {
      "name": "blogpost1",
      "text": "blogpost1 text"
      "tags": {
        "tag1": true,
        "tag2": true,
        "tag3": true
      }
    },
    "blog2": {
      "name": "blogpost2",
      "text": "blogpost2 text"
      "tags": {
        "tag1": true
      }
   },
   "blog3": {
     "name": "blogpost3",
     "text": "blogpost3 text"
     "tags": {
        "tag1": true
      }
   }
}

{
  "tags": {
    "tag1": {
      "blog1": true,
      "blog2":true,
      "blog3":true,
    },
    "tag2": {
      "blog1":true
    },
    "tag3": {
      "blog1":true
    }
  }
}

Надеюсь, это поможет. По сути, вы бы запросили свои теги json с каждым тегом, содержащим ключ для соответствующего сообщения в блоге. Хорошим следующим шагом будет, вероятно, вместо того, чтобы указывать в тегах значение true в качестве значения, поставить дату, чтобы вы могли последовательно упорядочить сообщение в результатах поиска.

Опубликуйте, что вы придумали в качестве решения, пожалуйста.