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

时间:2018-12-27 06:38:37

标签: 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 });保存数据时,它不会保存。或者如何一次从数据库保存数据?

2 个答案:

答案 0 :(得分:2)

托尼(Tony)的答案显示了一旦您知道他们的钥匙怎么去找医生。在各种情况下,您可能都不知道密钥。

例如,如果您对想要读书的医生一无所知,那么您只能阅读所有医生的信息:

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

答案 1 :(得分:1)

如果要使用特定的密钥上传,请将引用更改为此:

 <!-- Base application theme. -->
    <style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
       <item name="android:textAllCaps">false</item> 
    </style>

然后,如果要使用特定密钥获取数据,请更改为:

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