gpt4 book ai didi

仅读取特定项目的 Firebase 安全规则

转载 作者:行者123 更新时间:2023-12-02 00:30:30 25 4
gpt4 key购买 nike

我是 Firebase 的新手,感觉自己完全迷失了数据库规则。我需要允许用户阅读所有者字段等于特定值的项目。

这是我的记录结构:

{
"books" : {
"-LKwbZsfy55d24kwX4tf" : {
"description" : "Adventures",
"title" : "Captain Donsak",
"owner" : "b7bS753Hvc0fmQ24Jnc"
},
"-LKwc1Xna07nequDtpF6" : {
"description" : "History",
"title" : "World War II",
"owner" : "hLoOnnv4883Vhvm9Vt4"
},
"-LKwi4qcsqbgvZPdhCXp" : {
"description" : "Adventures",
"title" : "Sea Wolf",
"owner" : "umV4hFm96vpdwBytx63"
}
}
}

我已经尝试了几种规则选项,包括以下规则(这些在 firebase 文档中提供),但在任何情况下,当我应用这些规则中的任何一个时,它都会返回 0 个项目。

{
"rules": {
"books": {
".read": "data.child('owner').val() === 'umV4hFm96vpdwBytx63'",
".write": "auth != null"
}
}
}


{
"rules": {
"books": {
"$uid":{
".read": "root.child('owner').val() == 'umV4hFm96vpdwBytx63'",
".write": "auth != null"
}
}
}
}

如果我只是指定

".read": "auth != null"  

它返回所有记录,但这不是我需要的。

我使用一个简单的js命令来读取数据:

const itemsRef = firebase.database().ref('books'); 

基本上我需要的是使用安全规则过滤数据,但正如下面 RenaudTarnec 所述,这是不可能的。所以我将不得不使用js来过滤它:

const itemsRef = firebase.database().ref('books').orderByChild('owner').equalTo(owner); 

有什么地方不对请指教。谢谢。

最佳答案

实际上“Firebase 规则不是过滤器”,参见 https://firebase.google.com/docs/database/security/securing-data#rules_are_not_filters

这意味着,要获取此数据,您必须使用与您的安全规则“一致”的查询。

在 JavaScript 中类似于以下内容,请参阅 https://firebase.google.com/docs/database/web/lists-of-data

var query = firebase.database().ref('books').orderByChild('owner').equalTo('umV4hFm96vpdwBytx63');

关于仅读取特定项目的 Firebase 安全规则,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52094260/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com