Firebase:从实时数据库中检索 childByAutoID

Posted

技术标签:

【中文标题】Firebase:从实时数据库中检索 childByAutoID【英文标题】:Firebase : Retrieve childByAutoID from Realtime Database 【发布时间】:2016-09-05 10:10:47 【问题描述】:

我目前正在学习 Firebase 和 ios,所以请多多包涵。我目前正在向名为Posts 的表发帖,如下所示:

 let postInfo = ["Description": txtPostDescription.text!, "ImageUrl": imgUrl, "Likes": 0]

 var t = FIRDatabase.database().reference().child("Posts").childByAutoId().setValue(postInfo)

 print(t)

我正在尝试检索插入新记录时创建的primary key,但是我无法检索它。我试过childByAutoId()但由于浏览网页而无法找到可靠的解决方案,这是一个随机猜测)。有什么想法吗?

【问题讨论】:

【参考方案1】:
let postInfo = ["Description": txtPostDescription.text!, "ImageUrl": imgUrl, "Likes": 0]

var reference  = FIRDatabase.database().reference().child("Posts").childByAutoId()

reference.setValue(postInfo)
let childautoID = reference.key 
print(childautoID)

注意 :- Alhogh childByAutoId()Firebase 的一个很棒的功能。但是当你想创建一个具有唯一键的节点时,更喜欢 timestamps 来存储数据。原因为什么我更喜欢时间戳是因为它们也有助于数据排序......但这只是我......

替代方案:-

let timeStamp = Int(NSDate.timeIntervalSinceReferenceDate()*1000) //Will give you a unique id every second or even millisecond if you want.. 
FIRDatabase.database().reference().child("Posts").child(timeStamp).setValue(postInfo)

【讨论】:

工作,谢谢@Dravidian 感谢@Dravidian 请注意 childByAutoId() 确实 返回一个可按时间排序的 ID:“childByAutoId 生成的唯一键:以客户端生成的时间戳为前缀,以便生成的列表将按时间顺序排列。” firebase.google.com/docs/reference/swift/firebasedatabase/api/…

以上是关于Firebase:从实时数据库中检索 childByAutoID的主要内容,如果未能解决你的问题,请参考以下文章

Firebase:从实时数据库中检索 childByAutoID

如何从 Firebase 实时数据库中检索/获取项目

如何从 Firebase 实时数据库中检索值?

使用 SwiftUI Xcode 11 从 firebase 实时数据库中检索数据

从 Firebase 实时数据库 Kotlin 中检索有序数据

无法从firebase实时数据库检索数据到recyclerview [重复]