我想知道如何检查文档值是否是对另一个文档的引用,并且该文档是否存在使用firebase安全规则.
我尝试了什么:
function validate(document) {
return exists(document.reference)
}
match /collection/{document} {
allow read: if request.auth != null;
allow create, update: if isAdmin(request.auth.uid) && validate(request.resource.data);
}
Run Code Online (Sandbox Code Playgroud)
由于这不起作用,我试图弄清楚是什么类型document.ref.不幸的是,它似乎没有列出的任何类型:https:
//firebase.google.com/docs/firestore/reference/security/?autuser = 0#data_types
我试过,path因为这是最明显的工作存在.我没想到它会起作用.另一个猜测可能是map或string.两者都不正确.
因为我不知道这可能是什么,并且没有任何记录如何将引用转换为路径,我现在必须在这里问.
有没有人找到解决方案?
TL; DR:
我需要检查使用Firestore安全规则是否存在文档中保存的引用并且它是否存在于数据库中.
谢谢,丹尼斯
有谁知道 Firebase 云功能 onCreate 身份验证触发器的时间是什么?
是这样的吗:
- 用户使用 SDK 注册
- Firebase 在 Firebase 身份验证中创建用户并进行 Firebase 身份验证
- Firebase SDK 发送登录成功事件
-调用 函数onCreate
或类似:
- 用户使用 SDK 注册
- Firebase 在 Firebase 身份验证中创建用户并进行用户身份验证-调用
Firebase onCreate
- Firebase SDK 发送登录成功事件
或者换句话说:
我能否确定在成功用户注册后,Firestore 用户文档已由简短的 Firebase Cloud Function 脚本创建?
那么我可以确定当SDK发送身份验证成功回调时Firestore用户文档已创建吗?
authentication firebase firebase-authentication google-cloud-functions google-cloud-firestore
我在Java项目中找到了一个新符号,想知道它是什么意思?
systemUiVisibility & ~View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR
Run Code Online (Sandbox Code Playgroud)
~在这种情况下意味着什么?
为什么我的代码工作,当我在以下代码中使用"时:
for(int i=0;i<7;i++){
if(grid[row][i]!=0){
if(player == "yellow"){
grid[row][i-1] = 'y';
}
else if(player == "red"){
grid[row][i-1] = 'r';
}
}
}
Run Code Online (Sandbox Code Playgroud)
但是当我在以下代码中使用'时,请不要工作:
for(int i=0;i<7;i++){
if(grid[row][i]!=0){
if(player == 'yellow'){
grid[row][i-1] = 'y';
}
else if(player == 'red'){
grid[row][i-1] = 'r';
}
}
}
Run Code Online (Sandbox Code Playgroud)
它总是说,"无效的字符常量".
- grid是一个二维char变量
- row是一个interger
-player是超类(window)受保护的,并且在超类的构造函数中占用了黄色值:
protected String player;
public window() {
player = "yellow";
}
Run Code Online (Sandbox Code Playgroud)