Как получить данные currentUser в firebase - PullRequest
0 голосов
/ 14 мая 2019

Я пытаюсь использовать firebase.database (). Ref ('/ friends / запросы /'). EqualTo (currentUser.uid) в. приведенный ниже код для извлечения данных только для текущего пользователя, вошедшего в систему. Я очень запутался в том, как отфильтровать его по имени пользователя, и перепробовал несколько сценариев безрезультатно.

Я уже пытался использовать метод equalTo из firebase, но не могу заставить его работать. Как я могу получить доступ ко второму дочернему элементу моей структуры данных и по-прежнему получать данные под ним? ошибка в функции friendRequestFetch.

JSON

{
  "requests" : {
    "RIXXnKMGxYRPBTe1kBUsNUV9eFL2" : {
      "NQgSxcVKm1N3tnkykUevBM45JLn2" : {
        "name" : "Tom Hanks",
        "photoURL" : "https://firebasestorage.googleapis.com/v0/b/myapp-d0755.appspot.com/o/profilePhotos%2FNQgSxcVKm1N3tnkykUevBM45JLn2?alt=media&token=7822d763-e1e0-421e-88bf-836b34184c2c",
        "receiver" : "RIXXnKMGxYRPBTe1kBUsNUV9eFL2",
        "sent" : 1557800380001,
        "status" : "pending",
        "uid" : "NQgSxcVKm1N3tnkykUevBM45JLn2"
      }
    }
  }
}

код

export const sendFriendRequest = (item) => {
    const { currentUser } = firebase.auth()
    return (dispatch) => {
        firebase.database().ref(`/friends/requests/${item.uid}/${currentUser.uid}`)//sting interpolation
            .set({
                uid: currentUser.uid,
                //userName: firebase.database().ref(`/users/${currentUser.uid}`).snapshot.val().userName,
                name: currentUser.displayName,
                photoURL: currentUser.photoURL,
                status: "pending",
                sent: firebase.database.ServerValue.TIMESTAMP
            })
            .then(() => {
                dispatch({
                    type: SEND_FRIEND_REQUEST
                });
            });
    };
};

export const friendRequestFetch = () => {
    const { currentUser } = firebase.auth()
    return (dispatch) => {
        firebase.database().ref('/friends/requests')
            .on('value', snapshot => {
                snapshot.forEach(child => { //anytime we get any value call function with an object thats describing the data thats sitting in there
                    dispatch({
                        type: FRIEND_REQUEST_FETCH_SUCCESS,
                        payload: child.val() // this is how we get access to the data at this ref
                    });
                });
            });
    };
};

Мне нужны дочерние значения vals, но только для текущего пользователя, вошедшего в систему.

1 Ответ

0 голосов
/ 14 мая 2019

Текущий вошедший в систему пользователь может получить два следующих метода.

1)

firebase.auth().onAuthStateChanged(function(user) {
  if (user) {
    // User is signed in.
  } else {
    // No user is signed in.
  }
});

2)

var user = firebase.auth().currentUser;

в вашем случае currentUserравно firebase.auth().не firebase.auth().currentUser;.Я думаю, что проблема есть.

для получения дополнительной информации, обратитесь к документации Firebase https://firebase.google.com/docs/auth/web/manage-users

...