Google cloud firestore 多位置更新firestore中的安全规则
如何确保仅在客户端对多个文档进行原子写入? 例如,在创建记录时,会生成一个记录文档,同时还会生成一个记录日志文档(两个不同的位置) 我不希望用户通过只创建记录文档而不创建记录日志文档来覆盖。使用当前firestore安全规则是否可能做到这一点?使用Google cloud firestore 多位置更新firestore中的安全规则,google-cloud-firestore,Google Cloud Firestore,如何确保仅在客户端对多个文档进行原子写入? 例如,在创建记录时,会生成一个记录文档,同时还会生成一个记录日志文档(两个不同的位置) 我不希望用户通过只创建记录文档而不创建记录日志文档来覆盖。使用当前firestore安全规则是否可能做到这一点?使用getAfter()函数查看文档在写入一次或一组写入后的状态。您可以使用此选项确保另一文档中的值已更新,例如: service cloud.firestore { match /databases/{database}/documents {
getAfter()
函数查看文档在写入一次或一组写入后的状态。您可以使用此选项确保另一文档中的值已更新,例如:
service cloud.firestore {
match /databases/{database}/documents {
// Allow a user to update a record or log only if they keep the timestamps equal for the same ID
match /records/{record} {
allow write: if request.auth.uid != null &&
getAfter(/databases/$(database)/documents/logs/$(record)).data.timestamp == request.resource.data.timestamp;
}
match /logs/{log} {
allow write: if request.auth.uid != null &&
getAfter(/databases/$(database)/documents/records/$(log)).data.timestamp == request.resource.data.timestamp;
}
}
文档:使用getAfter()
函数查看一次或多次写入后文档的状态。您可以使用此选项确保另一文档中的值已更新,例如:
service cloud.firestore {
match /databases/{database}/documents {
// Allow a user to update a record or log only if they keep the timestamps equal for the same ID
match /records/{record} {
allow write: if request.auth.uid != null &&
getAfter(/databases/$(database)/documents/logs/$(record)).data.timestamp == request.resource.data.timestamp;
}
match /logs/{log} {
allow write: if request.auth.uid != null &&
getAfter(/databases/$(database)/documents/records/$(log)).data.timestamp == request.resource.data.timestamp;
}
}
文档:文档现在在这里:文档现在在这里: