【发布时间】:2018-03-17 18:34:30
【问题描述】:
我正在使用 Firebase 和 iOS 在过去 24 小时内保留整数值的时间序列。我已经尝试使用文档中的.updateChildValues() 和.setValue(),但还没有弄清楚如何防止firebase 覆盖每个子值,而不仅仅是具有相同键的子值。
func writeStepsPost(withUserID userID: String, steps: NSNumber) {
let timeStamp = NSDate().timeIntervalSince1970 as NSNumber
let post_user: NSString = userID as NSString
let value: NSNumber = steps
let post = ["uid": post_user,
"steps": value,
"lastUpdate":timeStamp]
let childUpdates = ["/posts-steps-user/\(userID)/": post]
ref.updateChildValues(childUpdates)
let currentHour = Calendar.current.component(.hour, from: Date())
let hourlyPost = ["steps":value]
let dailyUpdates = ["/posts-steps-user/\(userID)/pastDay/\(currentHour):00/": hourlyPost]
print("posting hourly steps update")
ref.updateChildValues(dailyUpdates)
当时间从 10 点变为 11 点时,'10:00':123 的节点被替换为 '11:00':243,当我需要为 11 添加一个节点时,将 10 保留到第二天。我怀疑由于该功能正在推送两个更新,因此第一个更新会替换现有节点。
有什么想法吗?
【问题讨论】:
-
我尝试使用此代码并得到一个类似
userID/pastDay/10:00:123的节点,接下来的一个小时,我得到了userID/pastDay/11:00:234。它没有覆盖第一个,而是创建了一个新的。您如何在timedRef.setValue(value)命令中定义value?我不明白您是如何获得10:123而不是10:00:(some-value)的,因为您在 timedRef 路径中确实有 :00。 -
@ParrettApps 我在 OP 中说错了,我已经对其进行了编辑以使其更加清晰。
-
@ParrettApps Firebase 似乎正在替换
pastDay节点,该节点正在删除其所有子节点。
标签: ios swift firebase firebase-realtime-database