Firebase动态查询取决于数组内的数据

时间:2018-04-24 15:48:14

标签: firebase react-native firebase-realtime-database

这是我的动态数组

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 :(得分:0)

尝试如下:

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});
})();