Как извлечь одно значение данных из базы данных firebase с помощью reactjs

#javascript #firebase #firebase-realtime-database

#javascript #firebase #firebase-realtime-database

Вопрос:

Я работаю над проектом, пытаясь получить имя текущего пользователя, который вошел в систему. Когда мы создаем пользователя, он добавляется в базу данных с уникальным идентификатором в качестве имени строки.

Пользовательские данные

Здесь вы можете увидеть всех зарегистрированных пользователей, но мне нужен только тот, который вошел в систему, чтобы я мог выбрать имя и фамилию, чтобы сказать «Привет (bla) (bla)»

Код, который у меня сейчас есть, это :

 import React from "react"
import { auth, database }  from '../../handlers/Firebase'
export default function Dashboard() {
    const user = auth.currentUser
    const refUserInformation = database.ref('UserInformation/')
    refUserInformation.on('value', function(data){
        console.log(data.val())
    })
    return (
        <div className="page-dashboard">
            <div className="maxtext">
                <p>userid: {user.uid}</p>
                <p>Naam: </p>
            </div>
        </div>
    )
}
  

Может ли кто-нибудь помочь мне с получением зарегистрированного пользователя (так что не цикл)

В общем, проблема в том, что в настоящее время я возвращаю всех пользователей в свой журнал консоли, но мне нужен только тот, который зарегистрирован и находится на соответствующей панели мониторинга. Я хотел бы опубликовать это имя (не с помощью цикла, а с помощью одного запроса)

Комментарии:

1. Я бы предпочел использовать аутентификацию firebase вместо этого, это сэкономит много времени, если вы хотите сделать это таким образом, тогда вам придется хранить пользователя в сеансе, файлах cookie или локальном хранилище. На YouTube есть много руководств, основанных на том, что вы спрашиваете, чтобы вы могли их проверить.

2. Я понимаю вас, но мы уже используем auth, но мы не хотим зацикливать пользователей, мы просто хотим выполнить одну выборку из 1 пользователя, а не вводить всех пользователей сразу

Ответ №1:

Чтобы получить только пользователя с заданным user_id значением, вам придется использовать запрос:

 const refUserInformation = database.ref('UserInformation/')
const currentUserQuery = refUserInformation.orderByChild('user_id').equalTo(user.uid);
currentUserQuery.on('value', function(snapshot){
  snapshot.forEach((data) => {
    console.log(data.val())
  });
})
  

В общем, я бы рекомендовал хранить информацию о пользователе с UID в качестве ключа. Таким образом:

  1. Каждый UID по определению может встречаться в базе данных только один раз, поскольку ключи уникальны для родительского узла.
  2. Поиск информации о пользователе по их UID становится проще, поскольку вам не понадобится запрос.

Чтобы сохранить пользователя под своим UID, используйте refUserInformation.child(user.uid).set(...) вместо refUserInformation.push(..) .