我看到要获取安全规则中的文档字段,必须使用get。下面的示例显示如何在用户集合中获取某些文档的“ admin”字段。如果我想获取另一个字段,我是否需要执行另一个获取请求,或者我可以只执行一个获取请求并获取文档中所需的所有字段。
这是我在文档中引用的示例。
https://firebase.google.com/docs/firestore/security/rules-conditions
service cloud.firestore {
match /databases/{database}/documents {
match /cities/{city} {
// Make sure a 'users' document exists for the requesting user before
// allowing any writes to the 'cities' collection
allow create: if exists(/databases/$(database)/documents/users/$(request.auth.uid))
// Allow the user to delete cities if their user document has the
// 'admin' field set to 'true'
allow delete: if get(/databases/$(database)/documents/users/$(request.auth.uid)).data.admin == true
}
}
}
答案 0 :(得分:1)
是的,您将不得不编写另一个get()。 Firestore安全规则中没有变量,因此您无法存储get()的内容以便多次使用其数据。
多次访问同一文档可能不会产生多次读取费用。该文档指出:
某些文档访问调用可能会被缓存,并且缓存的调用不计入限制。