У меня есть три объекта в моем быстром приложении. Story, в которой есть StoryItems (например, предложение), которая в свою очередь имеет слова. Эти объекты связаны друг с другом без проблем в базе данных Realm, однако я пытаюсь использовать базу данных Firebase в качестве удаленного бэкэнда для поддержания тех же отношений. Я понимаю, что Firebase - это база данных noSQL, и я пытаюсь «денормализовать» структуру.
Чтобы поддерживать связь между историями и storyItems, я пытаюсь создать структуру перекрестных ссылок под названием 'StoriesStoryItems' (см. Фото). Однако мне только удалось получить последний элемент со следующим кодом:
let storiesStoryItemsRef = ref.child("storiesStoryItems")
let storyID = storiesRef.key!
let storyRef = storiesStoryItemsRef.child(storyID)
let storyItemsRef = ref.child("storyItems")
var storyItemUID = ""
storyItemsRef.observe(.childAdded, with: { (snapshot) in
storyItemUID = snapshot.key
let values = ["storyItemUID" : storyItemUID] as [String : Any]
storyRef.updateChildValues(values, withCompletionBlock: { (err4, ref) in
if err4 != nil {
print(err4!)
return
}
})
}, withCancel: nil)
Буду благодарен за любые предложения о том, как правильно это реализовать. Я уже пытался использовать setValue вместо updateChildValues. Я также пытался перебрать snapshot.children безуспешно. Как я могу получить все идентификаторы storyItem в StoriesStoryItems? Заранее спасибо за ваши мысли.