如何将数据添加到Firebase?

时间:2016-10-12 16:33:56

标签: ios swift firebase firebase-realtime-database

我的目标是每天为Firebase中的全局变量添加+1,以跟踪已过去的天数。我正构建一个每天都会提供新事实的应用程序,并且在UTC时间标记的19:00,我希望case语句编号(日全局日变量)增加+1。

有些人建议我比较两个日期并获得通过这种方式的日期。如果我这样做,我可以在第一天希望应用程序在某天19:00开始的时候硬编码初始时间。然后,当此后每天调用函数reached1900UTC()时,将其与当前时间的Firebase时间戳进行比较,该时间戳应为19:00。从理论上讲,它应该表明已经过了1天或更长时间。

到目前为止,这是最好的解决方案,感谢@DavidSeek和@Jay,但如果有人在这方面有解决方案,我仍然希望通过并发写入来解决这个问题。在那之前,我将David的答案标记为正确答案。

如果有多人打电话给我,我该怎么做才能增加+1以上?因为我担心的是,当说100个人称这个函数时,每个调用它的人都会增加+1。

我的应用程序适用于全球时间,此功能每天在19:00 UTC调用。因此,当调用该函数时,我希望日计数增加一。

3 个答案:

答案 0 :(得分:2)

答案 1 :(得分:2)

您可能知道这一点,但Firebase无法自动递增计数器,因为没有服务器端逻辑,因此如果没有来自客户端的交互,在19:00 UTC有计数器增量是不可能的恰好在那时登录。

话虽如此,让第一个登录增量计数器的用户相当直接 - 然后登录后的任何其他客户端都不会增加它并且可以访问当天的新内容。

看看Zapier.com - 这是一项可以为您的应用启动基于时间的触发器的服务,可以解决这个问题。

在撰写本文时,Zapier和Firebase并不能很好地协同工作,但是,Zapier可以在继续使用Firebase进行存储的同时对您的应用进行其他一些触发选项。

另一个想法......

为什么不是每天都在节点内存储每天的内容,而是在每个用户登录时,应用程序获取当天的内容,而不是处理计数器和计算天数。

2016-10-10
      fact: "The Earth is an Oblate Spheroid"
2016-10-11
      fact: "Milli Vanilli is neither a Milli or a Vanilli. Discuss."
2016-10-12
      fact: "George Washington did not have a middle name"

这将消除许多问题,例如计数器,更新,同时写入Firebase,触发器等等。

它还具有动态性和可扩展性,用户可以轻松查看当天的事实或任何前一天的事实

答案 2 :(得分:1)

我正在尝试将您的问题分成不同的部分。

1)如果你想使用全局变量来计算今天的天数,比如今天。然后我将硬编码的时间戳设置到设置NSDate的App中。

然后在我的应用程序中,当我需要知道已经过去的日子时,我会调用一个函数来计算从时间戳到NSDate()的日期。

2)如果你的应用程序中有一个功能,它将+1计入Firebase,那么你的恐惧是正确的。每个使用该应用程序的人都会计算+1。

3)如果您希望每个用户在使用他们的应用程序时拥有变量计数,那么我将处理用户注册。所以我有一个“UserID”,然后我会像这样设置一个Firebase树:

用户名 -------> FirstOpen ------->日期

这样你就可以处理每个用户的第一次打开。 然后,您可以为每个用户单独设置时间戳和+1。因为那时你将每个用户的+1设置为他们的UserID .child