我的快速应用程序中有三个对象。一个具有StoryItems(例如一个句子)的故事,而故事又具有Words。这些对象彼此相关,在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”。我也尝试遍历快照。孩子们没有成功。如何将所有storyItem ID放入storyStoryItems?预先感谢您的想法。