【问题标题】:Firestore security rules for batched writes. How do they work?批量写入的 Firestore 安全规则。它们是如何工作的?
【发布时间】:2021-02-11 20:47:07
【问题描述】:

如果客户端代码应该对 Firestore 进行 批量写入,如下所示:

DOC: Transactions and Batched writes

const db = firebase.firestore();
const batch = db.batch();

// UPDATE CITY POPULATION IN CITIES COLLECTION

const docRef = db.collection('CITIES').doc('NYC');
batch.update(nycRef, {population: 10000000});

// UPDATE CITY POPULATION IN ALL_CITIES_POPULATIONS COLLECTION

const docRef = db.collection('ALL_CITIES_POPULATION').doc('ALL_CITIES_POPULATION');
batch.update(docRef, {
  NYC: 1000000
});

在第一次更新时,我将更新 CITIES 集合上的 NYC 文档上的属性。

在第二次更新中,我正在更新 ALL_CITIES_POPULATION 文档中名为 NYC 的属性,该属性位于 ALL_CITIES_POPULATION 集合中。即:这是一个保存每个城市人口的单一文档。

这段代码应该可以正常工作。

但是是否有一个安全规则来确保这些写入总是一起被触发?如果某些恶意代码仅在第一次或第二次更新时触发一次写入怎么办?

对于批量写入场景,处理安全性的正确方法是什么?

【问题讨论】:

    标签: javascript firebase google-cloud-firestore firebase-security


    【解决方案1】:

    要检查安全规则中的批量写入,您可以使用getAfter()existsAfter() 函数。这些返回/检查写入操作后存在的数据,如果允许写入操作。

    因此,在您的情况下,您可以检查写入后ALL_CITIES_POPULATION 文档的NYC 字段是否与NYC 文档的population 字段相同。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-12-11
      • 1970-01-01
      • 2020-10-30
      • 2018-10-19
      • 2019-07-05
      • 2021-04-21
      • 2019-11-27
      相关资源
      最近更新 更多