Swift:无法更新Firebase数据库值

时间:2017-03-09 19:03:14

标签: ios swift firebase firebase-realtime-database

当我按下按钮时,我正在尝试将我的Firebase数据库中的条目值从false更新为true。我可以使用以下代码获取当前快照的值:

@IBAction func test(_ sender: Any) {

ref.child("Sell_Request").queryOrdered(byChild: "name").queryEqual(toValue: requestUsername).observeSingleEvent(of: .value, with: { (snapshot : FIRDataSnapshot) in

    print(snapshot)

    })
}

我正在尝试使用以下代码将“Request_Made”的值从false更新为true,但是我收到了一个SIGBRT。

@IBAction func test(_ sender: Any) {


        ref.child("Sell_Request").queryOrdered(byChild: "name").queryEqual(toValue: requestUsername).setValue(true, forKey: "Request_Made");

    }

以下是我的数据库条目在FireBase中的显示方式:

enter image description here

2 个答案:

答案 0 :(得分:1)

我相信你仍然需要观察查询。

@IBAction func test(_ sender: Any) {

    ref.child("Sell_Request").queryOrdered(byChild: "name").queryEqual(toValue: requestUsername).observeSingleEvent(of: .value, with: { snapshot in 

       for child in snapshot.children {           

           if let item = child as? FIRDataSnapshot {

               item.ref.setValue(true, forKey: "Request_Made");
           }
       }
    }
}

答案 1 :(得分:1)

这是正确的方法。

ref.child("Sell_Request").queryOrdered(byChild: "name").queryEqual(toValue: requestUsername).observeSingleEvent(.value, with: { dataSnapshot in
    let enumerator = dataSnapshot.children
    while let sell_request = enumerator.nextObject() as? FIRDataSnapshot {
        sell_request.ref.child("Request_Made").setValue(true)
    }
})