gpt4 book ai didi

javascript - 嵌套 Firebase 查询

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

我正在尝试对我正在构建的队列系统进行嵌套的 firebase 查询。目标是获取“站”列表,然后查询“项目”。与给定的“车站”匹配。然后显示数据,以便列出我的“电台”,并在该电台下列出与该电台匹配的“项目”。我的数据结构如下:

projects
-LYFLi59ZFTcHHNGEl4Y
-LYFNmlW_fDOxOGep1VT
SKU: "66534"
buyerEmail: "guy@internet.com"
comments: "comment"
createdAt: 1549684385662
queue: 1
station: "Lathe"
timeTest: "Fri Feb 08 2019"
stations
-LYCB7awMyE7gxRKlojN
StationtName: "Lathe"
-LYCCBjC4JT9rZlgJSiL
-LYCCD0J6VqafpRL8Mlf

在本例中,我正在寻找等于“车床”的产品并将它们显示在“车床”队列中。

现在我有一个返回我所有电台的列表:

this.stationRef = firebase.database().ref('stations/');
this.stationRef.on('value', resp => {
this.stations = [];
this.stations = snapshotToArray(resp);

});

然后我有另一个引用,它返回按电台排序的所有项目,并且等于电台数组中的电台值。

    this.projectRef = firebase.database().ref('projects/')
.orderByChild('station')
.equalTo(------this.Is My Problem-----); ///// Looking for this.stationId ////
this.projectRef.on('value', resp => {
this.projects = [];
this.projects = snapshotToArray(resp);

});

我使用以下命令返回我想要传递给projectRef的车站的值,但我无法在循环外部获取变量,并且无法在循环内部使用projectRef..

    const snapshotToArray = snapshot => {
let returnArr = [];

snapshot.forEach(childSnapshot => {
let item = childSnapshot.val();
item.key = childSnapshot.key;
this.stationId = childSnapshot.val().StationtName;
<--------------------------------------->
this.stationId is the
variable I want to pass
into the projectRef
<---------------------------------------->
returnArr.push(item);

});
return returnArr;
}

预先感谢您的帮助!我是否错过了任何最佳实践或以错误的方式解决问题?

再次感谢..

最佳答案

Firebase的核心是彻底扁平化数据结构(NO-SQL)。但同时复杂的查询一直是 Firebase 的痛点,这就是为什么他们要求我们使用 firestore 来处理复杂的查询结构。

据我所知,您想要列出带有其产品子列表的电台。通过一次同步实现它的最佳方法是将项目 ID/名称数组放入站点中。因此,您只监听电台节点,它具有所有项目 ID 的数组,并且仅显示电台列表并使用数组显示项目子列表,并且只需点击使用该 ID 即可打开项目的详细信息。

车站- ID- 站名 产品:{ 产品 1、产品 2、产品 3 }

但是,如果您想在同一屏幕上显示产品的所有信息,也只需加载所有产品(如果不是数以百万计,则转移到 firestore。)一次,然后使用键和值作为产品本身将其保存在 map 中,然后使用它来显示信息。除非确实需要,否则不要在 firebase 中进行嵌套查询

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

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