swift firebase如何在数据库顶部设置/添加数据

时间:2017-05-30 16:42:29

标签: ios swift firebase firebase-realtime-database

我正在构建一个包含Firebase的应用,并且需要能够在我的数据库顶部添加/和/或设置数据。目前,每当我添加数据时,它都会将其随机放置在父节点下。我已经看到了一些 Objective C 的答案,但它们并没有真正有意义。很抱歉缺少代码,但我不知道在这个问题上究竟从哪里开始。任何帮助都会很棒!

2 个答案:

答案 0 :(得分:2)

当你说它被“随机”放置在父级之下时,我认为这是被调用的childByAutoId()方法。虽然节点的名称随机出现(例如-K6tdghsbci7g8),但它实际上将确保按顺序在给定父节点下添加数据。这对于向列表添加新数据非常有用。例如:

let pointlessData:String = "some data"
ref.childByAutoId().setValue(pointlessData)
// creates a new ordered child node under the `ref` with "some data" as the value

实际上没有办法以这种方式将节点排序到前面,尽管您可以通过为添加的每个节点添加负时间戳来按时间戳排序,然后使用ref.queryOrderedByChild("negativeTimestamp")对结果进行排序,以便你得到的价值是最新的。

答案 1 :(得分:1)

let path = FirebaseBaseUrl + "dialogs/" + self.receiverId + "/" + self.senderId

    let chilRef = FIRDatabase.database().referenceFromURL(path)
    let refChild = chilRef.childByAutoId()
    let dic = NSMutableDictionary()
    dic .setValue(text, forKey: "text")
    dic .setValue(FIRServerValue.timestamp(), forKey: "timestamp")
    dic .setValue(true, forKey: "your")

    refChild.updateChildValues(dic as [NSObject : AnyObject]) { (error, ref) in
        if(error != nil){
            print("Error",error)
        }else{
            print("\n\n\n\n\nAdded successfully...")
        }
    }