Firestore监听器安全规则:仅初始查询检查还是更新时也检查?
Firestore监听器更新时的安全规则读取次数问题
问题还原
假设Firestore安全规则中使用了get()函数,初始通过监听器获取100个文档时产生了101次读取操作;当其中单个文档更新后,接收该更新文档时是否会再次触发安全规则检查,进而产生2次读取(更新的文档本身+规则中的get()调用)?
结论与细节
是的,当单个文档更新并推送给监听器时,确实会产生2次读取操作:
- Firestore实时监听器在文档更新时,会重新对该文档执行安全规则校验,确保当前用户仍具备访问该更新后文档的权限,这个校验流程是强制触发的。
- 规则中如果包含
get()函数调用(比如读取其他文档来验证权限逻辑),每次执行规则时都会触发一次新的get()读取,不会复用初始获取时的读取结果。 - 初始的101次读取应该是100个目标文档的读取,加上规则中
get()触发的1次读取(比如规则是集合级别的全局校验,get()仅调用一次);而单个文档更新时,只针对这一个文档重新执行规则,因此对应1次文档本身的读取+1次规则中get()的读取,总共2次。
内容的提问来源于stack exchange,提问作者stevenkkim
相关产品推荐
相关产品推荐

