【问题标题】:Retrieve data by specific value in firebase按firebase中的特定值检索数据
【发布时间】:2018-05-29 19:42:03
【问题描述】:

我是 Firebase 的新手。我正在 vue 和 firebase 中制作应用程序。这是我喜欢这个快照的参考“用户”。

在文本中:

-L0PZ870WKlPC2BpRxbw email: "rebowit@gmail.com" name: "Carol Howard" -L0P_xMlFVxOFuQ0yHne email: "dekyl@hotmail.com" name: "Alvin Boyd"

我想得到name,我将提供email。需要能够在 vue 应用程序中运行的 JavaScript 解决方案。像这样的功能会很合适

function(email){ // some code return name } 我怎样才能做到这一点?

【问题讨论】:

    标签: javascript firebase firebase-realtime-database vue.js


    【解决方案1】:

    如果您有用户电子邮件,那么您可以如下检索用户名;

    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() 时,它会返回如下对象:ibb.co/idYepm
    • 接缝你有数据。这是检索数据的异步函数需要时间。因此,请考虑您在哪里控制数据。
    • 虽然它的返回对象是带键的,所以我已经解决了这个问题name = snapshot.val() name = Object.values(name) name = name[0].name
    猜你喜欢
    • 2017-01-19
    • 2018-12-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多