Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/firebase/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Firebase 为什么';在firestore工作中的给定示例是否符合文档要求?_Firebase_Google Cloud Firestore_Firebase Security - Fatal编程技术网

Firebase 为什么';在firestore工作中的给定示例是否符合文档要求?

Firebase 为什么';在firestore工作中的给定示例是否符合文档要求?,firebase,google-cloud-firestore,firebase-security,Firebase,Google Cloud Firestore,Firebase Security,我已尝试按以下方式创建数据库: service cloud.firestore { match /databases/{database}/documents { match /cities/{city} { allow write: if request.auth.uid != null && getAfter( /databases/$(database)/documents/countries/$(request.

我已尝试按以下方式创建数据库:

service cloud.firestore {
  match /databases/{database}/documents {
    match /cities/{city} {
      allow write: if request.auth.uid != null &&
        getAfter(
          /databases/$(database)/documents/countries/$(request.resource.data.country)
        ).data.last_updated == request.time;
    }

    match /countries/{country} {
      allow write: if request.auth.uid != null;
    }    
    }
}
如果我更改一个城市的人口,它将自动更新特定国家的上次更新的字段

但它没有发生吗?
我参考了本教程:

您定义的安全规则仅强制执行是否允许文档读/写;它们实际上并不修改文档的数据。那你的规则呢

countries/{country}
fields : last_updated

cities/{city}
fields :Populations, country
只说“如果在交易或批量写入结束时,相应国家的上次更新的
字段也已更新,则允许写入城市文档。”

在客户端代码中,您需要一个事务(或批写入),该事务(1)写入城市文档,(2)更新国家/地区的上次更新时间

match /cities/{city} {
  allow write: if request.auth.uid != null &&
    getAfter(
      /databases/$(database)/documents/countries/$(request.resource.data.country)
    ).data.last_updated == request.time;
}