javascript - 如何使用唯一键在 Firebase 数据库中添加数据,然后使用唯一键获取数据?

标签 javascript firebase react-native firebase-realtime-database

-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 }); 它不会保存。或者如何立即保存数据库中的数据?

最佳答案

托尼的回答展示了一旦​​你知道医生的 key 后如何联系他们。还有多种情况您可能不知道 key 。

例如,如果您对要阅读的医生一无所知,您所能做的就是阅读所有医生的信息:

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");
  });
});

关于javascript - 如何使用唯一键在 Firebase 数据库中添加数据,然后使用唯一键获取数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53940798/

相关文章:

javascript - pageXOffset 和 pageYOffset 像素计算依赖性和性能

javascript - 表单提交按钮不适用于 AngularJs

javascript - Ember.js - ApplicationRoute 中的 this.set() 不工作

AngularFire2 - 通过 Observable 删除项目 - 最后一个项目不会从 UI 中删除

javascript - 从现有数组中简化和排序新数组的创建

javascript - 用 jQuery : can't parse data 休息通话

android - 使用 firebase 在无尽的回收器 View 中分页

node.js - react native : Failed to construct transformer: Error: Cannot create a string longer than 0x1fffffe8 characters

javascript - 当外部值发生变化时如何使组件重新渲染?

react-native - 如何更改 TabNavigator 中每个屏幕的标题? - react 导航