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