我已经添加了一些数据到Firebase实时数据库。它分为两部分,用户和预订。我的问题是,当用户预订乘车时,它给出了不同的uid,我希望当用户预订乘车时,它在相同的uid下。此外,如果开关打开,我想把它放在同一子节点下,预订,但它进入不同的节点时保存。如有任何帮助,我将不胜感激。
func Save(){
let key = ref.childByAutoId().key
let Booking = [
"id": key as Any,
"What Date": atALaterDate.text! as String,
"What Time": hoursMinutesTextField.text! as String,
"To What Time": ToWhatTime.text! as String,
"Requests or Notes": SRtextfield.text! as String
]
as [String : Any]
ref.child(key!).setValue(Booking)
}
这是我希望它在一个节点下的位置,与它上面的节点结合在一起。
func Save2(){
let key = ref.childByAutoId().key
if Switch.isOn{
let passengers = [
"Passengers": Stepperlabel.text! as String,
"passenger Age 1": AgeOfChild1.text! as String,
"passenger Age 2": AgeOfChild2.text! as String,
"passenger Age 3": AgeOfChild3.text! as String,
"passenger Age 4": AgeOfChild4.text! as String,
"passenger Age 5": AgeOfChild5.text! as String,
"passenger Age 6": AgeOfChild6.text! as String,
]
as [String : Any]
ref.child(key!).setValue("booking")
}else{
print("Hello")
return
}
}
我认为问题是如何向节点添加额外的数据。
重要的一点是保持对您想要写入的节点的引用,并将其与update
一起使用以添加/更改现有数据。
update
在不存在的节点上使用,则会被添加。这里有一个例子。假设我们有一个聊天应用程序,我们想写一个初始字符串Hello, World,然后添加一个额外的字符串怎么了?到同一节点
let messagesRef = self.ref.child("messages") //the top level node
let thisMsgRef = ref.childByAutoId() //create a child node
thisMsgRef.setValue( ["msg": "Hello, World"]) //create the node, write data
thisMsgRef.updateChildValues(["anotherMsg": "Whats up?"]) //add addl data
这将产生以下结构
messages
-Jy444f476u6...
anotherMsg: "Whats up?"
msg: "Hello, World"
如果你想一次又一次地重用这个节点,对它的引用可以存储为类var,然后在任何时候你想写它,只要引用var…
class ViewController: NSViewController {
var myMsgRef: DatabaseReference!
然后在代码后面的某个地方
func writeInitialData() {
let ref = self.ref.child("messages")
self.myMsgRef = ref.childByAutoId()
self.myMsgRef.setValue( ["msg": "Hello World"])
,然后当你想添加额外的数据
func addAdditonalData() {
self.myMsgRef.updateChildValues(["anotherMsg": "Whats up?"])