java - 无法获得输出“用户名已被使用!” 当我输入已存储在数据库中的用户名时
问题描述
数据库参考
DatabaseReference referSales;
referSales = FirebaseDatabase.getInstance().getReference("Sales");
用户名验证(包括密码验证)
referSales.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
if(!(edtPassword.getText().toString()).equals(edtConfirmPassword.getText().toString())) {
loadingDialog.dismiss();
Toast.makeText(Registration.this, "Password and Confirm Password are not identical!", Toast.LENGTH_SHORT).show();
if(dataSnapshot.child(edtUsername.getText().toString()).exists()){
loadingDialog.dismiss();
Toast.makeText(Registration.this, "Username has been used!", Toast.LENGTH_SHORT).show();
}
更新数据库
当输入的用户名与数据库中存储的用户名不重复,密码和确认密码相同时,新的用户信息将被添加到数据库中。
}else{
loadingDialog.dismiss();
final Sales salesperson = new Sales(edtFirstName.getText().toString(),edtLastName.getText().toString(),
edtPhoneNo.getText().toString(),edtEmail.getText().toString(), edtUsername.getText().toString(),
edtPassword.getText().toString(),edtConfirmPassword.getText().toString());
referSales.child(edtUsername.getText().toString()).setValue(salesperson).addOnCompleteListener(new OnCompleteListener<Void>() {
@Override
public void onComplete(@NonNull Task<Void> salesperson) {
if(salesperson.isSuccessful()){
Toast.makeText(Registration.this, "Added Successfully!", Toast.LENGTH_SHORT).show();
finish();
}
}
});
}
}
解决方案
您可以查询数据库以检查用户名是否已在您的数据库中使用。
Query query = databaseReference.child("users").orderByChild("userName")
.equalTo(edtUserName.getText().toString().trim();
query.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
if(dataSnapshot.exists()){
//user exist
Toast.makeText(getApplicationContext(),"Usename Has been used" ,
Toast.LENGTH_LONG).show();
}else{
//CREATE THE USER
}
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
}
});
推荐阅读
- reactjs - React 测试库 fireEvent.change 不能与 fireEvent.submit 一起使用
- sql-server - 在 SQL Server 2008 R2 中使用 FORMAT 的替代方法
- hashicorp-vault - 调整密钥时 Vault HashiCorp 参数过多错误
- php - PHP 脚本在没有重定向的情况下运行
- reactjs - 对大量项目的反应状态
- scala - 在 Flink (Scala) 的内存缓存中?无法加载番石榴
- menu - Prestashop 在特定页面上添加侧边菜单
- python - Python:Google-Maps-API 发送未知格式进行解析
- sharepoint - Robocopy 无法在本地硬盘上创建目录 Error 1 Incorrect Function
- javascript - 如何使用纯 JavaScript 每页显示 10 行数据?