Динамический запрос Firebase в зависимости от данных внутри массива - PullRequest
0 голосов
/ 24 апреля 2018

Это мой динамический массив

let arr = [1,3];

Я хочу сделать количество запросов в зависимости от длины массива

Firebase.database().ref(`test/${arr[0]}`).once('value', (snapshot) => {
    let arr = [];
    snapshot.forEach(() => {
      arr.push({
         name: snapshot.val().name
      });
    });
    this.setState({ data: arr });
}).catch((error) => console.error(error));

Теперь я делаю запрос путем жесткого кодирования индекса массива! Есть ли способ сделать запрос динамическим

Структура базы данных

{
    "test" : {
        "1" : {
            "name" : "One",
        },
        "2" : {
            "name" : "Two",
        },
        "3": {
            "name" : "Three",
        }
    }
}

Желаемый вывод

Имя только из 1 и 3

1 Ответ

0 голосов
/ 24 апреля 2018

Попробуйте следующим образом:

let arr = [1, 3];
arr.forEach((item) => {
    Firebase.database().ref(`test/${item}`).once('value', (snapshot) => {
        let arr = [];
        snapshot.forEach(() => {
          arr.push({
             name: snapshot.val().name
          });
        });
        this.setState({ data: arr });
    }).catch((error) => console.error(error));
});

Или, если вы хотите загрузить вызов setState один раз, имея все данные в одном массиве:

(async () => {
    let items = [1, 3];
    let arr = [];

    for (let item of items) {
        try {
            const snapshot = await Firebase.database().ref(`test/${item}`).once('value');
            snapshot.forEach(() => {
                arr.push({
                    name: snapshot.val().name
                });
            });
        } catch (error) {
            console.error(error);
        }
    }

    this.setState({data: arr});
})();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...