Вот моя структура данных в базе данных реального времени firebase.
[
И я хочу создать API для возврата данных в сочетании с toolbox
toolboxUsers
toolboxTools
для каждой панели инструментов.
Вот мой код. Я пробовал много способов, но никто не работает хорошо.
У меня также есть некоторые ссылки, такие как https://youtube.com/watch?v=Idu9EJPSxiY и , как сделать соединения в таблицах Firebase
путь 1
toolboxesRef.once('value', snapshot => {
var toolboxes = []
var toolboxKeys = Object.keys(snapshot.val());
for(var toolboxKey of toolboxKeys) {
var toolboxPromise = toolboxesRef.child(toolboxKey).once('value');
var toolboxUsersPromise = toolboxUsersRef.child(toolboxKey).once('value');
var toolboxToolsPromise = toolboxToolsRef.child(toolboxKey).once('value');
Promise.all([toolboxPromise, toolboxUsersPromise, toolboxToolsPromise])
.then(snapshot => {
var toolbox = [];
snapshot.forEach(childSnapshot => {
toolbox.push(childSnapshot.val());
});
toolboxes.push(toolbox);
})
}
res.json(toolboxes);
})
путь 2
toolboxesRef.once('value', snapshot => {
var promises = [];
snapshot.forEach(childSnapshot => {
var childKey = childSnapshot.key;
var toolboxPromise = toolboxesRef.child(childKey).once('value');
var toolboxUsersPromise = toolboxUsersRef.child(childKey).once('value');
var toolboxToolsPromise = toolboxToolsRef.child(childKey).once('value');
promises.push(toolboxPromise);
promises.push(toolboxUsersPromise);
promises.push(toolboxToolsPromise);
});
Promise.all(promises).then(snapshots => {
var toolbox = [];
snapshots.forEach(childSnapshot => {
toolbox.push(childSnapshot.val());
});
res.json(toolbox);
});
Ожидаемый результат - получить полные данные для каждого набора инструментов
Но я могу получить только данные одного набора инструментов вместо данных для каждого набора инструментов, потому что кажется, что для l oop будет выполняться первым.
Может кто-нибудь дать мне несколько советов? Или это неправильная структура данных?