【问题标题】:firebase following count rulesfirebase 遵循计数规则
【发布时间】:2016-10-23 08:46:57
【问题描述】:

我有这个结构

"Following": {
      ".validate": newData != null && newData.child(count).val() == root.child(Following).child($User).child(count).val() + 1),
      "$User": {
        "$Following": {
          "created": {}
        },
        "count": {}
      }
    }

我想防止 count 变量在不创建或删除跟随者的情况下增加或减少

为了防止在不创建新的情况下增加,我添加了这个规则

".validate": newData != null && 
             newData.child(count).val() == 
                     root.child(Following).child($User).child(count).val() + 1)

但我有问题要防止在不删除以下内容的情况下减少。

我的问题是这个

如果我知道以下内容将被删除,我如何才能减少计数变量?

抱歉英语不好:/

【问题讨论】:

  • 嘿@DThink。您能否花一些时间更好地解释一下您到底想要做什么,以便我们提供帮助? :)
  • 非常抱歉我的英语不好现在可以理解了吗?
  • 好多了! IMO,您不应该将这些计数内容存储在数据库中。根据需要保留Followings 数据,并在应用程序端使用numChildren() 对它们进行计数。
  • 是的,过去我尝试过这个,但是这个函数会检索所有数据,然后你可以计算它。例如。如果您有 100.000 张照片,则必须获取所有照片地址,然后才能使用 numChildren() 函数。我认为这是一种表现不佳的方法。不幸的是,我看到在 firebase 中不存在像 sql 语言这样的计数查询。我不是 Firebase 专家,你不存在服务器端的解决方案吗?
  • 我刚刚向我的answer here 添加了一个更新,可能会对您有所帮助。

标签: firebase firebase-realtime-database firebase-security


【解决方案1】:

你觉得这个方法怎么样?

    "Event": {
          "$User": {
            "counter": {
              ".validate": "newData.hasChildren(['value', 'tmp'])",
              "value": {},
              "tmp": {},
              "$other": {
                ".validate": "false"
              },
              ".write": "data.val() != null && newData.val() != null && (newData.parent().child(newData.child('tmp').val()).val() != null && newData.child('value').val() == data.child('value').val() + 1 || root.child('Event').child($User).child(newData.child('tmp').val()).val() != null && newData.parent().child(newData.child('tmp').val()).val() == null && newData.child('value').val() == data.child('value').val() - 1)"
            },
            "$Event": {
              //some variable and permissions
            }
          }
        }

我使用 tmp 变量来识别我想要验证的事件键是在创建中还是在删除中,因此我更新了 value 变量。 在示例中,我只添加了更新规则而不添加其他规则,以免混淆

【讨论】:

    猜你喜欢
    • 2021-07-14
    • 2011-05-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多