代码之家  ›  专栏  ›  技术社区  ›  Eliya Cohen

FireStore规则-允许用户仅查看最新创建的150个文档

  •  -1
  • Eliya Cohen  · 技术社区  · 6 年前

    我有以下消防仓库结构:

    reports/{reportId}: {
      ...
      createdAt: Timestamp
      updatedAt: Timestamp
    }
    

    在我的离子(角)应用程序中,我得到的结果如下:

    this.afs
      .collection('reports')
      .orderBy('createdAt', 'desc')
      .limit(180)
    

    在我的规则中,我写下以下规则:

    /reports/{reportId} {
      allow list: if request.query.limit && request.query.limit == 180
    }
    

    此规则允许列出数据,只要有180个文档的限制。问题是,如何强制查询 createdAt 作为 desc ?根据 docs request.query.orderBy 但是没有解释如何使用它

    0 回复  |  直到 6 年前
        1
  •  1
  •   Doug Stevenson    6 年前

    你是对的,关于这个的文档目前根本不存在。

    request.query.orderBy 是一个映射,其中字段是正在排序其值的键的名称,映射的值是“asc”或“desc”。所以,你的规则应该是这样的:

    /reports/{reportId} {
      allow list: if request.query.limit &&
                     request.query.limit == 180 &&
                     request.query.orderBy.createdAt == "DESC"
    }
    

    请记住,目前实施的 请求.query.orderby 有一个重大问题。查询可以包含多个orderby子句,它们的顺序非常重要。但是,目前无法确定安全规则中的顺序。 考虑到这个缺点,有可能 请求.query.orderby 可以在将来删除或更改。