gpt4 book ai didi

javascript - Firebase - 如何仅在用户 ID 与对象中的键匹配的情况下检索数据?

转载 作者:行者123 更新时间:2023-11-28 17:52:22 25 4
gpt4 key购买 nike

我在 Firebase 中有以下“数据库”:

projects: {
"-KpVHI1za0ElBWIJWb2k": {
"name": "John's project"
"uId": "Kojh6pkRNJPBzU78yzNXUiFv3aP2"
},
"-KpVHI1zadedldedWIJWb2k": {
"name": "Kojh6pkRNJPBzU78yzNXUiFv3aP2"
"uId": "Kojh6pkRNJPBzU78yzNXUiFv3aP2
},
"-KpVKKjSnCD3obVW-hsw": {
"name": "Kojh6pkRNJPBzU78yzNXUiFv3aP2"
"uId": "KPQgqAniekUhavofb79v2Jqjdwh1"
}
}

有没有办法使用 Firebase 规则来检索具有特定“uId”值的所有项目。例如,我有这些规则,但它们不起作用:

{
"rules": {
"projects": {
".read": "auth != null && data.child('uId').val() == auth.uid",
".write": "auth != null"
}
}
}

我正在执行以下查询

firebase.database().ref('projects')on('value', (project) => {
onRequestProject(project)
}, (error) => {
onRequestError(error)
})

我查看了 Firebase 文档,但找不到解决此问题的方法。我收到的错误:“错误:PERMISSION_DENIED”。欢迎任何帮助!

谢谢!

最佳答案

问题是您正在尝试读取所有子对象,但您给出了读取具有匹配 uid 的子对象的规则。

尝试将数据库查询更改为:

firebase.database().ref('projects').orderByChild('uId').equalTo(<your_reqd_userId>).on('value', (project) => {
onRequestProject(project)
}, (error) => {
onRequestError(error)
})

如果上述方法不起作用,我建议您将数据库结构更改为如下所示:

"projects": {
"uid1":{
Add your child objects here.
},
"uid2":{
Add your child objects here.
}
}

以及安全规则:

{
"rules": {
"projects": {
"$uId": {
".read": "auth.uid === $uId",
".write": "auth.uid === $uId"
}
}
}

您的数据库查询将是:

firebase.database().ref('projects').child(<your_reqd_userId>).on('value', (project) => {
onRequestProject(project)
}, (error) => {
onRequestError(error)
})

关于javascript - Firebase - 如何仅在用户 ID 与对象中的键匹配的情况下检索数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45218384/

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