Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/firebase/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在firebase中按特定值检索数据_Javascript_Firebase_Firebase Realtime Database_Vue.js - Fatal编程技术网

Javascript 在firebase中按特定值检索数据

Javascript 在firebase中按特定值检索数据,javascript,firebase,firebase-realtime-database,vue.js,Javascript,Firebase,Firebase Realtime Database,Vue.js,我是firebase的新手。我正在vue和firebase中制作一个应用程序。这是我的参考'用户'像这个快照 正文: -L0PZ870WKlPC2BpRxbw 电子邮件:“rebowit@gmail.com" 姓名:“卡罗尔·霍华德” -L0P_xmlfxofuq0yhne 电子邮件:“dekyl@hotmail.com" 姓名:“阿尔文·博伊德” 我想获得我将提供的姓名地址电子邮件。需要JavaScript解决方案,该解决方案需要能够在vue应用程序中运行。这样的函数是合适的 功能(电子邮

我是firebase的新手。我正在vue和firebase中制作一个应用程序。这是我的参考'用户'像这个快照

正文:

-L0PZ870WKlPC2BpRxbw
电子邮件:“rebowit@gmail.com"
姓名:“卡罗尔·霍华德”
-L0P_xmlfxofuq0yhne
电子邮件:“dekyl@hotmail.com"
姓名:“阿尔文·博伊德”

我想获得我将提供的
姓名
地址
电子邮件
。需要JavaScript解决方案,该解决方案需要能够在vue应用程序中运行。这样的函数是合适的

功能(电子邮件){
//一些代码
返回名称
}

我怎样才能做到这一点呢?

如果你有一封用户电子邮件,那么你可以按如下方式检索用户名

getNameByEmail(email) {
        var db = firebase.database();
        var ref = db.ref('users').orderByChild('email').equalTo(email);
        ref.once('value', snapshot => {
           if (snapshot.exists()) {
               var name = snapshot.val();
               name = Object.values(name);
               name = name[0].name;
               console.log('User email : ' + email + ' User name: '+ name );
           } else {
              console.log('There is no user who has email like '+ email)
           }
    })

}
在这种情况下,如果您经常使用电子邮件搜索用户,那么最好定义索引以获得更好的性能设置数据库规则,如

{
  "rules": {
    ".read": true,
    ".write": "auth != null",
    "users": { ".indexOn": ["email"] }
  }
}

那么,您的解决方案将为名称返回
undefined
。但当我将
snapshot.val().name
更改为
snapshot.val()
时,它返回如下对象:您拥有数据。这是一个异步函数,检索数据需要时间。因此,请考虑您在何处控制台数据。尽管其返回的对象具有密钥,所以我通过执行此代码解决了这个问题。