继续在我的餐厅订购应用上工作! 我试图将唯一的AutoID密钥附加到数组中,以便可以跟踪客户的订单,但是由于某些原因,Firebase不断发回密钥的多个副本,并且遵循以下模式:
第一个请求-发回密钥的一个副本-很好。 第二个请求-发回相同密钥的两个副本 第三个请求-发回相同密钥的三个副本 如此等等!
例如,当我在第5个请求上执行print(snapshot.key)时,它将打印 -LPx-9X6EYwjFv2IHFMS -LPx-9X6EYwjFv2IHFMS -LPx-9X6EYwjFv2IHFMS -LPx-9X6EYwjFv2IHFMS -LPx-9X6EYwjFv2IHFMS
而不只是一个!这使我认为Firebase会发回多份副本。
这是Firebase的错误,还是我应该使用其他方法来检索最后添加的Child的密钥(ID)?
谢谢
var customerRequestedItem : String = []
@IBAction func requestConfirmButton(_ sender: Any) {
let ref = Database.database().reference()
ref.child("Drink").childByAutoId().setValue(["CustomerID" : customerID, "RequestItem" : requestingItem, "Timestamp" : [".sv": "timestamp"]]){
(error:Error?, ref:DatabaseReference) in
if let error = error {
let alert = UIAlertController(title: "Ooops", message: "Request Not Received", preferredStyle: UIAlertController.Style.alert)
alert.addAction(UIAlertAction(title: "Try Again", style: UIAlertAction.Style.default, handler: nil))
self.present(alert, animated: true, completion: nil)
} else {
let customerRef = Database.database().reference(withPath: "Drink")
customerRef.queryOrderedByValue().queryLimited(toLast: 1).observe(.childAdded) { snapshot in
customerRequestedItem.append("\(snapshot.key)")
print (snapshot.key)
}