Vue. js экземпляр firebase - UID пользователя как ссылка на базу данных - PullRequest
0 голосов
/ 08 мая 2020

Возможно ли заставить следующий пример работать? Я поместил несколько объектов в базу данных реального времени firebase, и ссылка - это UID вошедшего в систему пользователя. Но даже если я хочу запросить объект по ссылке, которую мы можем получить из firebase.auth.currentUser.uid, я получаю uid ошибки NULL. Есть ли способ заставить эту функцию работать?

Vue. js Код:

import firebase from '.././firebase';
import { db } from '.././firebase';



export default {
    name: 'addMatch',
    data() {
        return{
            tableTennisData: [],
            player1Name: '',
            player2Name: '', 
            //Game 1
            firstMatchPlayer1Game1: '',
            firstMatchPlayer1Game2: '',
            firstMatchPlayer1Game3: '',
            firstMatchPlayer1Game4: '',
            firstMatchPlayer1Game5: '',
      }
    },

    firebase: {
        tableTennisData: db.ref(firebase.auth().currentUser.uid).child('tableTennis'), // UID Of Null error!
    },
        addMatch: function (e){
            e.preventDefault();
            const obj = {
            //Game 1
            player1Name: this.player1Name,
            player2Name: this.player2Name,
            firstMatchPlayer1Game1: this.firstMatchPlayer1Game1,
            firstMatchPlayer1Game2: this.firstMatchPlayer1Game2,
            firstMatchPlayer1Game3: this.firstMatchPlayer1Game3,
            firstMatchPlayer1Game4: this.firstMatchPlayer1Game4,
            firstMatchPlayer1Game5: this.firstMatchPlayer1Game5,
            }
            firebase.auth().onAuthStateChanged(function (){
                db.ref(firebase.auth().currentUser.uid).child('tableTennis').push(obj);
            });

            console.log(obj);
        },

    },

1 Ответ

0 голосов
/ 08 мая 2020

Похоже, что пользователь еще не вошел в систему.

Имейте в виду, что Firebase требуется время, чтобы восстановить состояние аутентификации пользователя при загрузке страницы. Если вы позвоните auth.currentUser до этого, вы вернетесь null.

tableTennisData: db.ref(firebase.auth().currentUser.uid).child('tableTennis'), 

Я не вижу, где вы вызываете этот код, но вы захотите обернуть его в onAuthStateChanged обработчик, как вы уже сделали в addMatch.

...