【发布时间】:2016-11-24 06:24:16
【问题描述】:
每个用户都有一个对话节点,每次新对话有新消息时,我都需要为对话中涉及的两个用户更新两个对话节点,我只想在此处更新“lastMessage”和“tinestamp”字段是我的尝试:
let fanoutObject = [userPath : dataToUpdate,
otherUserPath : dataToUpdate]
K.FirebaseRef.root.updateChildValues(fanoutObject)
每个用户的路径在哪里:
"/users/{userID}/conversations/{conversationID}"
和dataToUpdate:
let dataToUpdate:[String:AnyObject] = ["timestamp" : message.timestamp,
"lastMessage": message.textBody]
结果:
更新每个用户的节点对话但删除对话节点中的其他字段!
每个用户的对话节点是:
"conversations" : {
"{conversationID}" : {
"lastMessage" : "your name ?",
"seen" : true,
"timestamp" : 1467849600000,
"with" : {
"country" : "US",
"firstName" : "John",
"profileImage" : "https://..."
}
}
}
请注意,节点 conversations 位于节点 user 内,该节点是根节点 users 内的一个元素
更新后是:
"conversations" : {
"{conversationID}" : {
"lastMessage" : "your name ?",
"timestamp" : 1467849600000,
}
}
但我只是希望更新这两个值并保留其他值?
根据文档,我的代码应该可以工作:
updateChildValues更新定义路径的一些键 替换所有数据。
【问题讨论】:
标签: ios json swift firebase firebase-realtime-database