我在Firebase中有以下数据:
设备
iphone5手机
创建日期:“1456183905”
我试图确定是否存在“DATEY创建”,如果它不存在,则创建它。
我读过快照,但是有没有更容易的方法来检查FixBask以查看这些数据是否存在?我现在使用的是快照,但它绑定到一个事件处理程序。难道我不能做一个基本的查询来查看这个条目是否存在?
谢谢。

最佳答案

您可以测试在SWIFT代码中是否存在一个值,通过:

let ref = Firebase(url: "https://stackoverflow.firebaseio.com/35570687")
ref.observeSingleEventOfType(.Value, withBlock: { snapshot in
    if (!snapshot.exists()) {
        ref.setValue([".sv": "timestamp"])
    }
    else {
        print("already exist")
    }
})

但是,由于这只是客户端的,所以有可能两个客户端将在几乎完全相同的时间运行代码,并且最终都会写入时间戳。在上面的代码片段中,这不是问题,但是在实际的用例中,这种竞争条件可能是不需要的。
正如Andre所评论的,您可以在安全规则中验证这一点:
"date_created": {
  ".write": "!data.exists() || data.val() == newData.val()"

这验证了这是您第一次编写date_created(这样数据还不存在)或者其他的值不变。

07-24 09:47
查看更多