请考虑以下格式:
{
"events": {
"one": { ... }
"two": { ... }
...
}
"user-events": {
"foo": {
"one": true
}
}
"users": {
"foo": { ... }
}
}
假设我不知道节点"two"
的名称并且它实际上是一些随机字符串,在Firebase中,如何在"two": true
中将"foo"
添加到"user-events"
事件"two"
完成后?当我创建"two"
时,我应该在数据库中的某处保存其生成的ID(实际上不是“两个”)吗?
我问,因为我在Swift应用程序中有一个包含来自"events"
的所有事件的提要,并且每个事件单元都有一个按钮,该按钮应该将事件添加到登录用户的配置文件中。在"user-events"
下的该用户ID(在本例中为“foo”)下,我想添加一个被点击的事件的引用。
答案 0 :(得分:0)
如果我理解正确,你可以尝试这样做:
1)通过.childByAutoId()
func生成unicId并将其保存到您的项目中。例如,它将是post
。
2)使用此unicId
进行保存。
static func add(_ postItem: PostItem,
completion: @escaping (_ hasFinished: Bool) -> Void) {
let mainReference = FIRDatabase.database().reference(withPath: "MainDataBase")
let updates = [
"/spotpost/" + postItem.key: postItem.toAnyObject(),
"/spots/" + postItem.spotId + "/posts/" + postItem.key: true,
"/users/" + postItem.addedByUser + "/posts/" + postItem.key: true
]
mainReference.updateChildValues(updates)
{ (error, _) in
if error == nil {
completion(true)
} else {
completion(false)
}
}
}
您可以同时将其添加到多个地方。
或者如果您想在之后的某个时间添加它 - 您需要将此密钥存储在对象中。像:
+SomeObject
-key
-property1
-...
-propertyN
然后使用它。
希望有所帮助