Как добавить данные в базу данных Firebase с уникальными ключами, а затем получить данные с уникальными ключами? - PullRequest
0 голосов
/ 27 декабря 2018

-LUeq8x-5QaVSXKJdXtz - это ключ -LUeq8x-5QaVSXKJdXtz is the key

signup = async () => {
    const { email, pass, job, description, name, age } = this.state;
// fetching state variables to use in this function


    try {   
      await firebase.auth().createUserWithEmailAndPassword(email, pass);

      var playersRef = firebase.database().ref("doctorsList/");

//push function adds the data with a unique key
      playersRef.push({
        doctor: {
          name: name,
          age: age,
          job: job,
          description: description
      },
      });
}
catch (error) { console.log(error)  }
}

Как получить данные из базы данных Firebase, если они имеют уникальные ключи?

var ref = firebase.database().ref( 'doctorsList/doctor/' );

  ref.on('value', (snapshot) => {
    alert(snapshot.val().name);
 });

Когда я использую alert(snapshot.val().name);, он показывает мне имя из базы данных, но когда я пытаюсь сохранить данные с помощью this.setState({ name: snapshot.val().name });, это не сохраняет.Или как я могу сохранить данные сразу из базы данных?

Ответы [ 2 ]

0 голосов
/ 27 декабря 2018

Ответ Тони показывает, как получить доктора, если вы знаете его ключ.Существуют также различные сценарии, в которых вы можете не знать ключ.

Например, если вы ничего не знаете о докторе, которого хотите прочитать, все, что вы можете сделать, это прочитать информацию для всех врачей:

var ref = firebase.database().ref( 'doctorsList' );

ref.on('value', (snapshot) => {
  snapshot.forEach((doctorSnapshot) => {
    alert(doctorSnapshot.key+": "+doctorSnapshot.val().doctor.name);
  });
});

Если вы знаете, например, имя доктора (-ей), вы можете использовать запрос для получения данных о докторе (-ах), соответствующих этому имени:

ref.orderByChild("doctor/name").equalTo("shubham").on('value', (snapshot) => {
  snapshot.forEach((doctorSnapshot) => {
    alert(doctorSnapshot.key);
  });
});

Вам все равно понадобитсяsnapshot.forEach здесь, поскольку может быть несколько докторов с одинаковыми именами.

Если вы хотите что-то изменить в каждом из этих врачей, вы можете обновить его в обратном вызове с помощью:

ref.orderByChild("doctor/name").equalTo("shubham").on('value', (snapshot) => {
  snapshot.forEach((doctorSnapshot) => {
    doctorSnapshot.ref.child("job").set("doctor");
  });
});
0 голосов
/ 27 декабря 2018

Если вы хотите загрузить с определенным ключом, измените ссылку на это:

const key = //your key here;
var playersRef = firebase.database().ref(`doctorsList/${key}`);

И затем, если вы хотите получить данные с определенным ключом, измените на это:

var ref = firebase.database().ref( `doctorsList/${key}`);

  ref.on('value', (snapshot) => {
    alert(snapshot.val().name);
 });
...