如何查看firebase中存在的电子邮件?

时间:2015-11-21 07:38:45

标签: javascript firebase

您好我使用的是firebase和javascript。当新用户注册时,我需要检查是否存在电子邮件ID。此代码适用于用户名或ID,但显示将电子邮件作为记录的错误。我不想为每条记录覆盖firebase唯一密钥生成。

var ref = new Firebase("https://kkk.firebaseio.com/");
var users = ref.child("users");
var userId = document.getElementById("email").value;
function checking()
{
   checkIfUserExists(userId);
}  
function userExistsCallback(userId, exists) {
  if (exists) {
    alert('user ' + userId + ' exists!');
  } else {
    alert('user ' + userId + ' does not exist!');
    var check = users.push({ email: username});
  }
}

function checkIfUserExists(userId) {

  users.child(userId).once('value', function(snapshot) {
    var exists = (snapshot.val() !== null);
    userExistsCallback(userId, exists);
  });
}

我输入电子邮件时收到此错误。

Error: Firebase.child failed: First argument was an invalid path: "anu@gmail.com". Paths must be non-empty strings and can't contain ".", "#", "$", "[", or "]"

我希望firebase中的数据看起来像这样,

users:{
       "ksjhfsjkbv67dsjhbcxcscdg":{
          "email": "sdfs@gmail.com"
       },
       "kXdhbrurjw9974jjdsos_asd":{
          "email": "anu@gmail.com"
       },
       ...

有人可以帮助我吗?

2 个答案:

答案 0 :(得分:2)

如果你在firebase中的数据有唯一键,那么它可能看起来像:

{
    users:{
       "dsjhfsjkbv67dsjhbcxcscdg":{
          "email": "blah@whatever.com"
       },
       "sXdhbrurjw9974jjdsos_asd":{
          "email": "anu@gmail.com"
       },
       ...
}

}

您得到的错误是因为您不能将非法字符作为数据的“键”,所以:

{
    "anu@gmail.com": "email"
}

是不可接受的,因此错误:

Error: Firebase.child failed: First argument was an invalid path: "anu@gmail.com". Paths must be non-empty strings and can't contain ".", "#", "$", "[", or "]"

“。”是不允许的。

如果您不知道唯一键,检查您的值是否存在的一种方法是执行以下操作:

users.once('value', function(snapshot) {
    var exists = false;
    snapshot.forEach(function(childSnapshot){
        if(userId === childSnapshot.val().email){
            exists = true;     
        }
    })
    userExistsCallback(userId, exists);
});

您可以在这里阅读有关每个功能的更多信息:

https://www.firebase.com/docs/web/api/datasnapshot/foreach.html

答案 1 :(得分:0)

我认为您不必检查电子邮件是否已经有一个帐户,因为Firebase无法使用该电子邮件创建另一个帐户。