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

Cod*_*het 3 ios firebase swift firebase-realtime-database

我正在学习Firebase和iOS的绳索,所以请耐心等待.我目前正在发布到我的表中Posts,如下所示:

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

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

 print(t)
Run Code Online (Sandbox Code Playgroud)

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

Dra*_*ian 10

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)
Run Code Online (Sandbox Code Playgroud)

注意: - Althogh 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)
Run Code Online (Sandbox Code Playgroud)

  • 请注意 childByAutoId() *确实* 返回一个时间可排序的 ID:“childByAutoId: 生成的唯一键以客户端生成的时间戳为前缀,因此结果列表将按时间顺序排序。” https://firebase.google.com/docs/reference/swift/firebasedatabase/api/reference/Classes/DatabaseReference (2认同)