我想在不请求身份验证服务的情况下只授予我的 firestore 数据库集合中的一个字段的写入/更新访问权限。我的firestore规则是:
service cloud.firestore {
match /databases/{database}/documents {
match /businesses/{businessId} {
allow read;
allow write: if request.auth.uid != null;
}
}
}
我的数据库结构为
businesses
是:addedBy: string;
address: string;
category: string;
claim: boolean;
city: string;
email: string;
id: string;
likes: number;
location: {
_lat: number,
_long: number
};
name: string;
ocHours: [{
day: string,
from: string,
status: string,
to: string
}];
phone: number;
sponsored: boolean;
state: string;
status: string;
verificationCode: string;
我只想更新
claim
没有 request.auth.uid != null
的字段.有什么建议?
最佳答案
正如 Ron 所说,firestore 规则中的权限分配只能应用于整个文档。
然而,有一种允许写入/更新/删除/创建特定文件的方法,即确保传入的更改对象仅具有您要授予权限的字段。
你这样做:
request.resource.data.keys()
hasOnly(["claim"])
service cloud.firestore {
match /databases/{database}/documents {
match /businesses/{businessId} {
allow read;
allow write: if request.resource.data.keys().hasOnly(["claim"]);
}
}
}
尽管问题发布了一段时间,但希望它有所帮助!!
关于firebase - Firestore 规则无需身份验证即可写入/更新特定字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51881309/