Transactions 在firebase中强制执行事务

Transactions 在firebase中强制执行事务,transactions,firebase,Transactions,Firebase,我目前正在使用firebase构建我的第一个应用程序。到目前为止还不错,数据库灵活且易于使用,我喜欢它 我正在构建一个完整的web应用程序,这意味着所有的代码和逻辑都将在浏览器中执行。对于某些更新,我需要事务来确保数据保持一致 但并不是每个人都喜欢有序和一致的数据,我担心有些人可能会试图创建自己的错误客户端来攻击我的应用程序 tl;dr:当我们只使用web客户端时,是否有办法强制执行某些更新的事务?您不能强制执行事务本身,但可以强制执行它们对数据的影响。例如,如果希望某个特定字段一次只递增1,则

我目前正在使用firebase构建我的第一个应用程序。到目前为止还不错,数据库灵活且易于使用,我喜欢它

我正在构建一个完整的web应用程序,这意味着所有的代码和逻辑都将在浏览器中执行。对于某些更新,我需要事务来确保数据保持一致

但并不是每个人都喜欢有序和一致的数据,我担心有些人可能会试图创建自己的错误客户端来攻击我的应用程序


tl;dr:当我们只使用web客户端时,是否有办法强制执行某些更新的事务?

您不能强制执行事务本身,但可以强制执行它们对数据的影响。例如,如果希望某个特定字段一次只递增
1
,则可以编写如下安全规则:

{
  "rules": {
    "counter": {
      ".write": "newData.val() == data.val() + 1"
    }
  }
}

在客户端代码中,您可以使用
transaction()
函数对计数器进行属性递增,但如果有人试图在您的安全规则强制执行的范围之外写入数据,则会失败。

不管有人如何设置数据,只要设置了什么数据就行了。换句话说,恶意攻击是针对数据完整性的,而不是设置正确有效数据的异常方法。所以你应该把重点放在应用安全规则来加强完整性上,而不是实现细节上。这让我想起了我非常喜欢的那个好的ol'thick数据库开发!我可能需要一些时间来重新转换心态,但我会喜欢的!谢谢你的回复!