Firebase使用.childAdded / lastOrder(iOS)返回密钥的多个副本

时间:2018-10-27 01:04:23

标签: ios swift firebase

继续在我的餐厅订购应用上工作! 我试图将唯一的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)
                }

0 个答案:

没有答案