Как я могу получить мой массив из firebase, чтобы иметь тот же вывод, что и мой статический массив? - PullRequest
0 голосов
/ 19 апреля 2019

Итак, я хочу переместить мои данные из массива в моем JS-приложении в Firebase, чтобы я мог легко обновлять значения, однако у меня возникают проблемы с получением значения, возвращаемого ТОЧНО, как это было тогда, когда оно было статическим. Это должно быть идентично, так как я зацикливаюсь на каждом из players. Я уверен, что это что-то простое, что я пропускаю, но любая идея будет принята с благодарностью.

Вот как я структурировал свой статический массив:

// Team names and player IDs for each go here

const staticTeams = [
    {
        name: 'Byron',
        players: ["192", "278", "176", "172", "37", "335"]
    },
    //etc
];

Вот как я получаю данные Firebase:

async function getTeams(){
    let teams = []
    db.collection("teams").get().then(function(querySnapshot) {
        querySnapshot.forEach(function(doc) {
            // doc.data() is never undefined for query doc snapshots
            let data = doc.data();
            teams.push(data)
            // console.log(doc.id, " => ", doc.data());
        });
    });
    return teams
  };

И я тестирую, печатая на консоль в другой функции, подобной этой:

console.log("firebase", teams)
console.log("static", staticTeams)

Консольные выходы ниже:

firebase 
[]
0: {name: "Mick", players: Array(6)}
1: {name: "Scott", players: Array(6)}
2: {name: "Moir", players: Array(6)}
3: {name: "Boyd", players: Array(6)}
4: {name: "Trev", players: Array(6)}
5: {name: "Tex", players: Array(6)}
6: {name: "Cail", players: Array(6)}
7: {name: "Byron", players: Array(6)}
length: 8
__proto__: Array(0)


static 
(8) [{…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}]
0: {name: "Byron", players: Array(6)}
1: {name: "Moir", players: Array(6)}
2: {name: "Cail", players: Array(6)}
3: {name: "Boyd", players: Array(6)}
4: {name: "Mick", players: Array(6)}
5: {name: "Tex", players: Array(6)}
6: {name: "Trev", players: Array(6)}
7: {name: "Scott", players: Array(6)}
length: 8
__proto__: Array(0)

1 Ответ

0 голосов
/ 19 апреля 2019

Вы можете сохранить массив пар ключ-значение, который содержит массивы в виде элементов со структурой, подобной этой, в Cloud Firestore: enter image description here

Или, если она должна быть точно такой же структуры, как у вас сейчас, она будет выглядеть примерно так: enter image description here

Чтобы получить массив из Firestore, вы должны сделать что-то вроде этого:

db.collection("teams").doc("teamDocument").get().then(function(doc) {
        teams = doc.data().team; //this would be the array field
    });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...