service cloud.firestore {
match /databases/{database}/documents {
match /businesses/{businessId} {
allow read;
allow write: if request.auth.uid != null;
}
}
}
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;
有什么建议吗?
正如Ron所说,firestore规则中的权限分配只能适用于整个文档。然而,有一种方法允许写/更新/删除/创建特定的文件,那就是确保传入的change对象只有您想要授予权限的字段。你可以通过:
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"]);
}
}
}
希望能有所帮助,虽然这个问题发布了一段时间!!
我正在做一个项目,我正在使用一个gsm模块称为SIM800的设备。SIM800能够获取和发布请求。但是Firebase SDK不能安装在设备上,所以我不能做认证。该设备将访问Firestore数据库,获取和发送请求,读写数据。由于模块不能进行身份验证,我是否可以使用我在reuesting时生成的令牌? 如果这是可能的,我应该如何编写firestore安全规则?
目前,我正在尝试将与存储在集合中的的id进行匹配: 这是写的还是我做错了什么。任何帮助都很感激。
如果我正确理解了这个答案,并参考了标准部分[dcl.type.auto.deduct-5],代码: 总是相当于 但是现在问题出现了,如果我把lambda表达式放在中,而不是: 令我惊讶的是,它在gcc和clang中都编译成功。我所经历的震惊的原因在于标准,其中特别指出lambda不应该出现在未赋值的操作数[expr.prim.lambda#2](emphasis mine)中: lambda表达式
但却有例外…
我按顺序调用这些函数(javascript'Firebase'): 我在firestore中设置了安全规则,只有当文档中的电子邮件字段等于auth email:时,才允许读取“users/:docid” 问题是在上会出现权限缺失或不足的错误。当然,数据库中的电子邮件是正确的,所以唯一的问题可能是无效。是否登录(使用任何登录函数),即使解析,也不能保证auth令牌被更新并可以立即使用?
问题内容: 我刚刚收到Java更新通知,说Update 17已经发布,所以我运行了更新,发现只有我的公共JRE被更新了。我仍然只有JDK的Update 16。 有没有办法自动提供最新的JDK? 当然,更新不应该放弃旧版本。这应该手动完成,因为Eclipse仍在使用旧版本。更新设置后,我将手动删除旧的JDK。 问题答案: 不在Windows上。如果要通过带有自动更新程序的Linux发行版来获取JDK