首页 > 解决方案 > Firestore 规则只允许文档所有者更新它,其他人更新某些字段

问题描述

希望创建一个仅允许文档所有者更新它或其他用户仅更新某些字段的 Firestore 规则。

这是我的规则

match /users/{userID} {
  allow update: if request.auth.uid == userID || (request.auth.uid != null && request.resource.data.keys().hasOnly(["field1","field2"]));
}

它返回Permission Denied On

await _db.collection("users").doc(userID).update({
  "field1": field1,
  "field2": field2,
});

标签: firebasegoogle-cloud-firestorefirebase-security

解决方案


请看一下这段代码。它允许其他人只修改字段barfoo

function isOwner() {
    return request.auth != null && request.auth.uid == userId;
}

allow update: if isOwner() || resource.data.diff(request.resource.data).affectedKeys().hasOnly(["bar", "foo"]);

推荐阅读