【发布时间】:2019-04-28 11:14:06
【问题描述】:
我正在使用 Firebase 制作实时信使。目前,每当我按下按钮时,我都希望将一条带有消息索引的新消息附加到频道中,但目前,每当我按下按钮时,都会创建一条覆盖旧消息的新消息。我知道 setValue 通常是问题所在,但我真的不知道我做错了什么。 What the database looks like before I add my new message。这是我添加一条新消息here,然后是我用来添加到数据库的代码后的样子。
@IBAction func sendMessageTapped(_ sender: Any) {
if messageTextField.text == "" {
print("blank")
return
} else {
// First we will update the amount of messages that the channel has.
ref.child("channels").child(channelName!).setValue(["numberOfMessages" : numberOfMessages+1 ])
numberOfMessages += 1
// after we have updated the amount of messages we will try to create a new message.
ref.child("channels").child(channelName!).child("messages").child(String(numberOfMessages)).child("message").child("content").setValue(messageTextField.text)
ref.child("channels").child(channelName!).child("messages").child(String(numberOfMessages)).child("message").child("name").setValue("Buddy")
}
}
【问题讨论】:
-
有几件事:a) 不要在 NoSQL 数据库中使用数字索引。这本质上是一个数组和Arrays Are Evil。 b)您每次都覆盖消息节点,这就是为什么您只有一个节点。
标签: ios swift firebase firebase-realtime-database overwrite