我在Firebase
正如您在用户中看到我已经打开的那样,我有一个帖子部分,在这篇文章部分中保存了Id的所有文章,这些文章都是由该用户发布的。
我面临的问题如下:
当用户创建新文章时,它保存在帖子表中,保存后我返回新生成的ID然后传递给用户表,我尝试将新创建的ID插入到帖子部分用户,所以我假设URL是这样的:
Users/{UserId}/Posts
然而,所有这一切都创建了一个名为posts的新部分,它实际上并没有将记录插入给定区域。
我的代码无效,如下:
let linkPost = [childautoID: true]
FIRDatabase.database().reference().child("Users/\(UserId)/Posts").child(UserId).setValue(linkPost)
仅供参考我手动添加的帖子中的两个ID。
我也尝试了以下内容:
FIRDatabase.database().reference().child("Users/\(UserId)/Posts").setValue(linkPost)
然而,所有这一切都会删除所有现有的ID,然后插入新的ID。
答案 0 :(得分:4)
我更喜欢这样的东西。这会自动附加数据而不先获取
FIRDatabase.database().reference().child("Users/\(UserId)/Posts").child(UserId).setValue(true)
答案 1 :(得分:1)
要在Firebase数据库子节点中附加键值对,请使用以下命令: -
为当前用户 Posts
FIRDatabase.database().reference().child("Users").child(FIRAuth.auth()!.currentUser!.uid).child("Posts")
节点制作Firebase数据库参考
检查用户数据库中是否存在Posts
节点,如果没有,请在 else 块中创建一个: - parentRef.setValue([postId : "True"])
但如果Posts
节点确实存在,请将其检索为 NSMutableDictionary
,将新对象设置为该节点,然后将更新后的Dictionary存储到该节点。
func storePostsToDB(postID :String!, userID : String! = FIRAuth.auth()!.currentUser!.uid){
let parentRef = FIRDatabase.database().reference().child("Users").child(userID).child("Posts")
parentRef.observeSingleEventOfType(.Value, withBlock: {(friendsList) in
if friendsList.exists(){
if let listDict = friendsList.value as? NSMutableDictionary{
listDict.setObject("True", forKey: postID)
parentRef.setValue(listDict)
}
}else{
parentRef.setValue([postID : "True"])
}
})
}
调用该函数: -
storePostsToDB("yourPostID")// If you want to store in the currentUser DB
storePostsToDB("yourPostID", userID : otherUserID)//If you want to store the post in some other users database with uid `otherUserID`