请问runTransactionBlock在幕后做什么?当我运行一个简单的setValue时,它使用完全相同的规则,但不能运行runTransactionBlock。 我怀疑在引擎盖后面runTransactionBlock写入了我所说的路径之外的路径,这导致我的安全规则拒绝许可。因此,我必须写一个全局".write": "auth != null"
并避免做我的通配符".validate": false
等内容。
我的安全规则以这种方式绘制:
{
"rules": {
// NOTE: I NEED THIS GLOBAL WRITE ALLOW FOR TRANSACTION TO WORK
".write": "auth != null",
"real_db": {
// USERS
"users": {
"$user": {
".read": "auth != null",
"$other": {
// NOTE: I NEED TO COMMENT VALIDATE FOR OTHER FIELDS IN USER
// ".validate": false
},
"pushToken": {
".read": "auth != null",
".validate": "auth != null"
},
...
我的runTransactionBlock在路径real_db/users/$uid
上运行,我正在更改pushToken
的值。当setValue在同一路径上运行并修改pushToken
时,它就可以工作。