【问题标题】:Typing a username that is not in the database still gives me "username is already taken"键入不在数据库中的用户名仍然给我“用户名已被占用”
【发布时间】:2019-02-24 05:36:39
【问题描述】:

我的 firebase 数据库示例:-Users -> -jjdsHGkjldsgJSKD -> -username: "kp", -email "kp@kp.com"

这是检查用户名是否存在于 firebase 数据库中的代码块

mRef.child("Users").addListenerForSingleValueEvent(new ValueEventListener() {
    @Override
    public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
        for(DataSnapshot data: dataSnapshot.getChildren()) {
            if (data.child("username").exists()) {
                Toast.makeText(RegisterActivity.this, "USERNAME IS ALREADY TAKEN", Toast.LENGTH_LONG).show();
                Log.i("username", "Username used: " + data.child("username").getValue());
                count++;
            }
        }
    }
    @Override
    public void onCancelled(@NonNull DatabaseError databaseError) {

    }
});

【问题讨论】:

  • 您不应该将一些真实用户名与data.child("username")value 进行比较吗?
  • 我应该将 edittext 字段中的值与数据库中的用户名进行比较,我读到这个数据库 Snapchat 可以提供帮助,但它不起作用。
  • edittext field - 你的代码在哪里?
  • 我知道部分代码没问题。查看数据库快照。
  • 是的,但是伙计,您没有在比较中使用它。试着阅读和理解我给你的信息,否则你只是在浪费我的时间。

标签: java android firebase firebase-realtime-database firebase-authentication


【解决方案1】:

你有点偏离了可行的方法。这应该更接近:

String valueFromInputText = "kishkish96";
mRef.child("Users")
    .orderByChild("username");
    .equalTo(valueFromInputText)
    .addListenerForSingleValueEvent(new ValueEventListener() {
    @Override
    public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
        if (dataSnapshot.exists()) {
            Toast.makeText(RegisterActivity.this, "USERNAME IS ALREADY TAKEN", Toast.LENGTH_LONG).show();
            Log.i("username", "Username used: " + data.child("username").getValue());
            count++;
        }
    }
    @Override
    public void onCancelled(@NonNull DatabaseError databaseError) {
       throw databaseError.toException(); // don't ignore exceptions
    }
});

变化:

  1. 此代码创建一个查询,该查询仅读取与输入的用户名相同的用户节点。
  2. 然后检查快照是否存在。如果是,则该用户已经存在。

【讨论】:

    猜你喜欢
    • 2010-11-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-29
    • 2012-01-04
    • 1970-01-01
    相关资源
    最近更新 更多