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;
}