我正在开发一个swift项目,并将firebase作为管理数据的后端。
FirebaseApp.configure()
Database.database().isPersistenceEnabled = true
这是我在app delegate文件中设置的内容。现在在我的聊天模块中,我通过以下代码在firebase数据库中添加了消息信息。
let messageData = ["text": text, "senderId": senderId, "senderName": senderDisplayName, "MediaType": "TEXT"]
self.messageSentRef?.child("Messages").childByAutoId().setValue(messageData)
现在我想在消息表中添加一个名为TimeStamp的新属性。
任何人都可以帮我怎么做?
答案 0 :(得分:1)
如果您有MessageItem / MessageData对象,则可以通过修改对象结构始终向其添加更多属性。要将timestamp
添加到现有数据,您可以直接在Firebase /数据库控制台中添加它(这是一种手动方式,或者只是在这样的代码中执行)
let messageItem = MessageItem(text: text,
senderId: self.user.email,
senderDisplayName: false,
mediaType: "",
timestamp: "")
let messageItemRef = self.ref.child("Message")
messageItemRef.setValue(messageItem.toAnyObject())
修改强> 原始问题没有MessageItem对象,所以让我们把它放在一起使得这个答案有效:
在你的viewController类中(或者顶层类),我们需要像这样实现一个MessageItem类对象
class MessageItem {
var text = ""
var senderId = ""
var senderDisplayName = false
var mediaType = ""
var timestamp = ""
init(text: String, senderId: String, senderDisplayName: Bool, mediaType: String, timestamp: String) {
self.text = text
self.senderId = senderId
self.senderDisplayName = senderDisplayName
self.mediaType = mediaType
self.timestamp = timestamp
}
func toAnyObject() -> Any {
return [
"text": text,
"senderId": senderId,
"senderDisplayName": senderDisplayName,
"mediaType": mediaType,
"timestamp": timestamp
]
}
}
答案 1 :(得分:0)
在Firebase中,数据可以由键:值对的字典表示。键总是一个字符串,但值可以是许多不同的东西,String,Int等。
该值也可以是键的另一个词典:值对。
在你的情况下,这行代码生成一个键:字符串的值对:和另一个字符串(messsageData)
self.messageSentRef?.child( “消息”)。childByAutoId()。的setValue(messageData)
看起来像这样
app_node
Messages
-y88hj3-39i9isdf: "some message data"
如果你想拥有一个时间戳子节点,而不是写单个字符串,你可以编写一个完整的key:value对字典 - 就像这样
let messageDictionary = [
"text": "some text",
"senderId": "the sender Id",
"senderDisplayName": "the sender display name",
"mediaType": "a media type",
"timestamp": "170708"
]
let messageItemRef = self.ref.child("Messages")
messageItemRef.childByAutoId().setValue(messageDictionary)
创建以下节点:
app_node
Messages
-Y9js9s9m494jms:
text: "some text"
senderId: "the sender Id"
senderDisplayName: "the sender display name"
mediaType: "a media type"
timestamp: :170708"