一段时间以来一直在使用Firebase规则,但我无法获得想要的结果
数据库:
,然后子集合“聊天”包含所有消息
我想要的是使用户“ 3”无法进入并加入聊天,并且Firebase规则仅允许文档中具有其UID的两个用户继续进行“聊天”子集合限制基于UID的访问
先前尝试
service cloud.firestore {
match /databases/{database}/documents {
match /Messages/{MessageId} {
allow write, read: if isOwner(userId);
}
function isOwner(userId) {
return request.auth.uid == resource.data.uid;
}
}
}
如果您能指出正确的方向,那将是我的迷茫!
答案 0 :(得分:0)
我认为您正在寻找
service cloud.firestore {
match /databases/{database}/documents {
match /Messages/{MessageId} {
allow write, read: if isOwner();
match /chats/{id} {
allow write, read: if isParticipant();
}
function isParticipant() {
return isOwner() ||
get(/databases/$(database)/documents/Messages/$(MessageId)).data[2]
== request.auth.uid
}
}
function isOwner() {
return request.auth.uid == resource.data.uid;
}
}
}
如果当前用户是此聊天的所有者或其他参与者,则允许对消息进行读/写访问。