Javascript 在firebase中按特定值检索数据
我是firebase的新手。我正在vue和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应用程序中运行。这样的函数是合适的 功能(电子邮
-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()
时,它返回如下对象:您拥有数据。这是一个异步函数,检索数据需要时间。因此,请考虑您在何处控制台数据。尽管其返回的对象具有密钥,所以我通过执行此代码解决了这个问题。