Firebase 数据库规则:未知变量“$memberId1”

Ric*_*ard 1 firebase firebase-security firebase-authentication firebase-realtime-database

我有以下 Firebase 数据库:

在此处输入图片说明

我想添加数据库规则来保护只有适当的用户才能访问他们的消息。

当我添加以下内容时,出现错误:

在此处输入图片说明

请问有人可以建议吗?

谢谢

更新

findMessages(chatItem: any): Observable<any[]> { // populates the firelist
    return this.af.database.list('/message/', {
        query: {
            orderByChild: 'negativtimestamp'
        }
    }).map(items => {
        const filtered = items.filter(
            item => ((item.memberId1 === chatItem.memberId1 && item.memberId2 === chatItem.memberId2)
                || (item.memberId1 === chatItem.memberId2 && item.memberId2 === chatItem.memberId1))
        );
        return filtered;
    });
}
Run Code Online (Sandbox Code Playgroud)

car*_*ant 6

.read规则的表达式中,以 开头的变量$表示路径中的键。

但是,成员 ID 不是键;他们是数据成员。要在表达式中使用它们,您可以使用data快照childval方法。像这样:

{
  "rules": {
    "message": {
      "$key": {
        ".read": "data.child('memberId1').val() === auth.uid || data.child('memberId2').val() === auth.uid"
      }
    }
  }
}
Run Code Online (Sandbox Code Playgroud)