Я пытаюсь выполнить вложенный запрос 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;
}
Заранее спасибо за помощь!И я пропускаю какие-либо лучшие практики или неправильно решаю проблему?
Еще раз спасибо ..