如果用户不包含在数组中,Firestore 只允许修改字段

Firestore only allow modification of field if user not contained in array

我有这样的文档

Field Score: number
Field usersThatRated: array 

我如何在 firestore 规则中强制执行只有 ID 未包含在 usersthatRated 数组中的用户才能 increment/decrement 得分?

您可以尝试使用以下安全规则:

match /collection/{docId} {
  allow read, write: if (request.resource.data.diff(resource.data).affectedKeys().hasAny(['usersThatRead']) && 
    !(request.auth.uid in resource.data.usersThatRead));
}

hasAny 只是为了检查 usersThatRead 字段是否正在更新。如果是,则检查用户的 UID 是否已存在于该数组中。

in 运算符用于检查给定数组中是否存在值。