Firestore 安全规则:使用 request.resource.data.__field__ != resource.data.__field__ 的成本?

cho*_*Bao 3 firebase google-cloud-firestore

拥有这样的 Firestore 安全性是否成本高昂(即大约有多少次读取以及我们收取多少美元费用):

 match /profiles/{document=**} {
   allow create: if request.auth.uid != null
   && (request.resource.data.firstName is string && resource.data.firstName != request.resource.data.firstName)
   && (request.resource.data.lastName is string && resource.data.firstName != request.resource.data.firstName)
  && (request.resource.data.username is string && resource.data.username != request.resource.data.username)
  && (request.resource.data.email is string && resource.data.email != request.resource.data.email)
}
Run Code Online (Sandbox Code Playgroud)

Dou*_*son 5

根据文档,您需要为安全规则中的 get() 和 contains() 请求付费:

使用 get() 和exists() 函数,您的安全规则可以根据数据库中的其他文档评估传入请求。

继续:

使用这些函数会在数据库中执行读取操作,这意味着即使您的规则拒绝该请求,您也需要为读取文档付费。请参阅 Cloud Firestore 定价了解更多具体的计费信息。

因此,如果您的规则不使用 get() 或 contains(),那么您就不会产生与该规则关联的额外账单。您似乎没有在这里使用这些功能中的任何一个,因此我预计不会产生额外的费用。