firebase - 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,
});
解决方案
请看一下这段代码。它允许其他人只修改字段bar
和foo
function isOwner() {
return request.auth != null && request.auth.uid == userId;
}
allow update: if isOwner() || resource.data.diff(request.resource.data).affectedKeys().hasOnly(["bar", "foo"]);
推荐阅读
- c# - 有没有一种从 JSON 字符串中获取 Manatee.JsonObject 的简单方法?
- javascript - 在 fetch 中捕获错误无法正常工作
- sql - T-SQL - 在 SELECT 语句期间设置变量
- apache-spark - 保存的随机森林模型在同一数据集上产生不同的结果
- python - 当我在管道上尝试 LabelEncoder 时,为什么管道会抛出 FitFailedWarining?
- php - 将编辑后的数据发送到数据表底部
- python - 如何使用 Python 读取谷歌驱动器文件
- r - Rmarkdown:参数众多,简化声明
- javascript - PHP - Laravel:我的提交按钮不起作用
- ibm-cloud - IBM Watson Assistant:如何允许从具有非条件子节点的对话节点离题?