gpt4 book ai didi

javascript - 如何在 Firebase 中查询嵌套对象?

转载 作者:行者123 更新时间:2023-11-28 17:33:37 27 4
gpt4 key购买 nike

我正在尝试创建查询字符串,因此 Firebase 的响应仅返回具有相应 userId 的行(不在顶层).
目标是仅获取当前登录用户的订单。

我的 Javascript 对象是这样的:

const order = {
itemId: "9T9WvJBbHiQpqyWdhBO0yX7lRny1"
price: 5.3,
customer: {
userId: "-L9EyOPFB2PnyAPFUH9M",
name: "demo user",
address: "some place in earth",
}
}

在 Firebase 中,我有这样的规则:

{
"rules": {
"orders": {
".read": "auth != null",
".write": "auth != null",
".indexOn": ["userId"]
}
}
}

但是,这显然行不通,因为索引指向顶层。

这是我为 API 调用创建的 URL:

const queryParams = `?auth=${token}&orderBy="userId"&equalTo="${userId}"`;

axios
.get('/orders.json' + queryParams)
.then(res => {
// get orders for the currently logged-in user
})
.catch(err => {
console.error(err);
});

如果我将 userId 上移一级,这完全可以正常工作,但客户和经过身份验证的用户使用相同的 ID,因此我宁愿将它们保留在一个对象中。

Firebase 中是否可以使用嵌套索引查询数据?
如果是这样,我应该使用什么规则和查询字符串?

最佳答案

您要在 orderBy="customer/userId" 上订购。

您还需要在该嵌套字段上定义索引,具体操作如下:

{
"rules": {
"orders": {
".read": "auth != null",
".write": "auth != null",
".indexOn": ["customer/userId"]
}
}
}

刚刚快速确认了最后一个针对 Tom's answer here 的情况.

关于javascript - 如何在 Firebase 中查询嵌套对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49662231/

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