firestore.rules 中的编译错误:意外'if'



我的firestore.rules:中有这个编译错误

Compilation errors in firestore.rules:
[E] 35:7 - Unexpected 'if'.
[E] 38:7 - Unexpected 'else'.
[E] 42:3 - Unexpected '}'.

firestore.rules的摘录如下:

service cloud.firestore {
match /databases/{database}/documents {
match /requests/{id} {
allow read: if isSignedIn() && ((getUserKennung() in resource.data.users_read) || userIsXY());
allow write: if isSignedIn() && ((getUserKennung() in resource.data.users_write) || userIsXY());
}
function getUserKennung(){
let email = request.auth.token.email;
if(email.lower().matches('.*@provider[.]org')){
return email[0:7].upper();
}
else {
return 'ERR: Invalid usermail';
}
}
function userIsXY(){
return request.auth.token.email == 'XY@provider.org';
}
function isSignedIn(){ 
return request.auth != null;
}
}
}

我不知道为什么会出现错误。

我认为if...then...else在安全规则的自定义函数中是不允许的,所以您可能想尝试这样的三元表达式:

function getUserKennung(){
let email = request.auth.token.email;
return email.lower().matches('.*@provider[.]org')
? email[0:7].upper()
: 'ERR: Invalid usermail';
}

最新更新