由Grandchild提供的Firebase v3查询 [英] Firebase v3 Query by Grandchild

查看:130
本文介绍了由Grandchild提供的Firebase v3查询的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

在注册新的电子邮件/密码类型的用户时,我需要让用户在调用<$ c $之前在我的实时数据库中不存在 displayName C> .createUserWithEmailAndPassword 。所以我需要一个查询。我需要在我的 users 分支中获得所有 displayName 的列表。我很困惑如何为每个用户auth.uid表示的 user 收集这个信息。



什么将检索看起来像?我正在想:
$ b

firebase.database()。ref('users /'+ allUserIds).equalTo('Joe');



但我知道 allUserIds 无效。有人可以帮我吗?

  {
users:{
6mJb9vtpbDelyyjirKEf6sSEj8h1:{
name:asdfs@asdf.com,
provider:password,
displayName:Joe
},
T7D7qEOPPHXjKSzglKheGJDQNkE3:{
name:gfdsdf@hlkjh.com,
provider:password,
displayName:Jane
},
kTG9R0V4aXYsogQfgF633KFYtzV2:{
name:Andre3000,
provider:google.com,
displayName:Andre
}



$ div $解析方案

'使用Firebase查询:

$ p $ var $ users = firebase.database()。ref('users');
var joes = users.orderByChild('displayName')。equalTo('Joe');
joes.once('value',function(snapshot){
console.log('Joe's'+(snapshot.exists()?'':'not')+'exist')
});

不要忘记在 users

  {
rules:{
users:{
.indexOn:displayName
}
}
}


When registering new email/password type users, I need to make user that the displayName that they enter does not already exist in my Realtime Database before calling .createUserWithEmailAndPassword. So I need a query. I need to get a list of all displayName's in my users branch. I am confused as to how to gather this for each user which is denoted by each users auth.uid.

What would the retrieval look like? I am thinking something like:

firebase.database().ref('users/' + allUserIds).equalTo('Joe');

but I know that allUserIds is not valid. Can someone help me with this?

{
  "users" : {
    "6mJb9vtpbDelyyjirKEf6sSEj8h1" : {
      "name" : "asdfs@asdf.com",
      "provider" : "password",
      "displayName" : "Joe"
    },
    "T7D7qEOPPHXjKSzglKheGJDQNkE3" : {
      "name" : "gfdsdf@hlkjh.com",
      "provider" : "password",
      "displayName" : "Jane"
    },
    "kTG9R0V4aXYsogQfgF633KFYtzV2" : {
      "name" : "Andre3000",
      "provider" : "google.com",
      "displayName" : "Andre"
    }
  }
}

解决方案

You'd use Firebase queries for that:

var users = firebase.database().ref('users');
var joes = users.orderByChild('displayName').equalTo('Joe');
joes.once('value', function(snapshot) {
  console.log('A Joe does '+(snapshot.exists()?'':'not ')+' exist')
});

Don't forget to define an index on users:

{
  "rules": {
    "users": {
      ".indexOn": "displayName"
    }
  }
}

这篇关于由Grandchild提供的Firebase v3查询的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆