Google cloud firestore Firestore规则和数据结构

Google cloud firestore Firestore规则和数据结构,google-cloud-firestore,firebase-security,Google Cloud Firestore,Firebase Security,我有一个关于数据结构和规则的问题。。。我有用户可以投票的内容。大概是这样的: Firestore对象: { name: "Cat", description: "A cat named Cat", votes: 56 } 现在。。。我希望经过身份验证的用户能够对投票进行更新访问,但不能对对象的任何其他值进行更新,当然还有读取权限,因为必须显示内容 我这样做是因为我想在显示内容时避免额外的查询 我是否应该在保存投票的地方创建另一个集合“投票”,

我有一个关于数据结构和规则的问题。。。我有用户可以投票的内容。大概是这样的:

Firestore对象:

{
  name: "Cat",
  description: "A cat named Cat",
  votes: 56
}
现在。。。我希望经过身份验证的用户能够对投票进行更新访问,但不能对对象的任何其他值进行更新,当然还有读取权限,因为必须显示内容

我这样做是因为我想在显示内容时避免额外的查询


我是否应该在保存投票的地方创建另一个集合“投票”,并为每个文档发出额外的请求以获取投票?

在规则中,您可以在写入之前和之后访问数据的状态-因此您可以测试特定字段以确保它们没有更改:

    function existing() {
        return resource.data;
    }
    function resulting() {
        return request.resource.data;
    }
    function matchField(fieldName) {
        return existing()[fieldName] == resulting()[fieldName];
    }
....
    allow update: if matchField("name") && matchField("description")
....
这些函数只是使规则更易于阅读