Firebase 使用AngularFire2检查用户列表中是否存在电子邮件

Firebase 使用AngularFire2检查用户列表中是否存在电子邮件,firebase,firebase-realtime-database,angularfire2,Firebase,Firebase Realtime Database,Angularfire2,我想检查是否存在电子邮件=someemail@gmai.com在Firebase数据库中 我使用这个功能,10分钟后在我的电脑中下载50MB的数据,我得到一个存在的响应。有任何方法可以让我在不到5秒的时间内得到我不想等10分钟 在PHP中类似于 SELECT FROM ALL USERS WERE EMAIL = 'george@gmail.com' 这是数据库: "users" : { user: { "email" : "george@gmail.com",

我想检查是否存在电子邮件=someemail@gmai.com在Firebase数据库中

我使用这个功能,10分钟后在我的电脑中下载50MB的数据,我得到一个存在的响应。有任何方法可以让我在不到5秒的时间内得到我不想等10分钟

在PHP中类似于

SELECT FROM ALL USERS WERE EMAIL = 'george@gmail.com'
这是数据库:

"users" : {

    user: {
      "email" : "george@gmail.com",
      "custom_id" : 534253,
      "description" : "some small description"
    },

    1754: {
      "email" : "natassa@gmail.com", <---- i want to find if this email from 5000 users exist in database and if exist i want to return true
      "custom_id" : 110571,   
      "description" : "some small description"
    },

    1755: {
      "email" : "george@gmail.com",
      "custom_id" : dsgfsdfds,
      "description" : "some small description"
    },

  }
“用户”:{
用户:{
“电子邮件”:george@gmail.com",
“自定义id”:534253,
“说明”:“一些小说明”
},
1754: {

“电子邮件”:natassa@gmail.com“,天哪,我发现问题在于说一些关于索引的话,当我在chrome控制台中查看时,我发现一些关于索引的警告,当我查看数据库规则时,我了解缺少了什么

我将其添加到数据库规则中
{
“规则”:{
“.read”:“auth!=null”,
“.write”:“auth!=null”,
“需要”:{
“.read”:“true”,
“.write”:“auth!=null”,
.indexOn:“名称”
},
“品牌”:{
“.read”:“true”,
“.write”:“auth!=null”,
.indexOn:“名称”
},
“产品”:{
“.read”:“true”,
“.write”:“auth!=null”,

“.indexOn”:“custom_id”OMG我发现问题在于说一些关于索引的东西,当我在chrome控制台中查看时,我发现一些关于索引的警告,当我查看数据库规则时,我了解缺少了什么

我将其添加到数据库规则中
{
“规则”:{
“.read”:“auth!=null”,
“.write”:“auth!=null”,
“需要”:{
“.read”:“true”,
“.write”:“auth!=null”,
.indexOn:“名称”
},
“品牌”:{
“.read”:“true”,
“.write”:“auth!=null”,
.indexOn:“名称”
},
“产品”:{
“.read”:“true”,
“.write”:“auth!=null”,

.indexOn:“自定义id”您正在将
x
传递到
equalTo
,它可能应该是
equalTo:email
。但是如果
x
是要过滤的值,那么性能似乎非常不寻常。您是否向
email
添加了索引?如果没有,JavaScript控制台中将显示一个警告。如果这不是问题,是否存在问题你有什么办法可以设置一个jsbin来为你复制这个性能吗?弗兰克,我是乔治·哈托斯,这是我的第二个帐户。是的,在x里面,我传递我从输入中获取的电子邮件,我想在提交表格之前检查一下,如果电子邮件存在于数据库中,如果电子邮件存在,我想通知用户,该电子邮件存在我给你一个例子,就是不是我问题的答案,但请描述问题给我2分钟Frank非常感谢您将
x
传递到
equalTo
,它可能应该是
equalTo:email
。但是如果
x
是要过滤的值,那么性能似乎非常不寻常。您是否为
email
添加了索引?如果没有,则没有我会在JavaScript控制台中显示一个警告。如果这不是问题,你有没有办法设置一个jsbin来为你重现这种性能?弗兰克,我是乔治·哈托斯,这是我的第二个帐户。是的,在x中,我传递我从输入中获取的电子邮件,我想在提交表单之前检查一下数据库中是否存在该电子邮件,以及ema是否存在il exist我想通知用户,电子邮件existI gona给你一个例子,它不是我问题的答案,但描述问题给我2分钟,非常感谢
check_if_email_exist(email: string) {

    this.users = this.db.list('/user', { query: {
      orderByChild: 'email',
      equalTo: x,
      limitToLast: 10,
    }} ) as FirebaseListObservable<Product[]>;

    console.log(this.users);

    return this.users;
}
{
  "rules": {
    ".read": "auth != null",
    ".write": "auth != null",

    "needs": {
      ".read": "true",
      ".write": "auth != null",
      ".indexOn": "name"
    },

    "brands": {
      ".read": "true",
      ".write": "auth != null",
      ".indexOn": "name"
    },

    "products": {
      ".read": "true",
      ".write": "auth != null",
      ".indexOn": "custom_id"   <========== This line you want 
    }

  }
}