在覆盖之前检查Firebase的现有数据?

时间:2016-02-23 06:50:36

标签: ios swift firebase

我在Firebase中有以下数据:

  
      
  • 设备      
        
    • 的iphone5      
          
      • date_created:“1456183905”
      •   
    •   
  •   

我正在尝试确定“ date_created ”是否存在,如果没有,则创建它。

我阅读了有关快照的内容,但有没有更简单的方法来检查Firebase以查看此数据是否存在?我现在拥有的是使用快照,但它与事件处理程序相关联。我不能只是做一个基本的查询来查看这个条目是否存在?

感谢。

1 个答案:

答案 0 :(得分:2)

您可以通过以下方式测试Swift代码中是否存在值:

"date_created": {
  ".write": "!data.exists() || data.val() == newData.val()"

但由于这只是客户端,因此有可能两个客户端几乎在准确的时间运行代码,并且最终都会写入时间戳。在上面的代码段中,这不会是一个问题,但在实际使用情况下,这种竞争条件可能是不受欢迎的。

正如安德烈评论的那样,您可以在安全规则中对此进行验证:

date_created

这验证这是您第一次写gulp -v(因此数据尚不存在)或者其他值不变。