【发布时间】:2018-01-22 16:38:16
【问题描述】:
我有一个注册表单(用户名、密码、电话号码)和一个提交按钮。我想检查这个用户名之前是否已经注册过。如果不是,则在表单中创建具有凭据的用户。
数据库结构
- 用户 --- -L3HQjgyXe6iNC0r0Ftr ------ 手机:“+15553334444” ------ 密码:“悠悠” ------ uid:“-L3HQjgyXe6iNC0r0Ftr” ------ 用户名:“我的用户名”
当我检查存在的用户名时,我得到了正确的 Toast。但是,如果被检查的用户名不存在,则不会运行 Toast 下 else 语句中的代码。有什么建议吗?
btnSubmit.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
final String username = txtUsername.getText().toString();
final String password = txtPassword.getText().toString();
final String number = txtNumber.getText().toString();
final boolean[] createUser = new boolean[1];
user = SerializableHelper.loadDataFromFile(OnBoardingActivity.this);
if (user != null) {
Log.d(TAG, "User uid: " + user.getUid());
Log.d(TAG, "User username: " + user.getUsername());
Toast.makeText(OnBoardingActivity.this, "You're already Registered!", Toast.LENGTH_SHORT).show();
} else {
Query query = mFBUsers.orderByChild("username").equalTo(username);
query.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for (DataSnapshot child : dataSnapshot.getChildren()) {
if (child.getValue(User.class).getUsername().equals(username)) {
Toast.makeText(OnBoardingActivity.this, "username already exists!", Toast.LENGTH_SHORT).show();
} else {
Log.d(TAG, "TELL APP TO CREATE NEW USER");
String tempUid = mFBUsers.push().getKey();
user = new User(tempUid, username, password, number);
// save user data locally before pushing to Firebase
SerializableHelper.saveSerializable(OnBoardingActivity.this, user);
mFBUsers.child(tempUid).setValue(user);
}
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
}
}
});
【问题讨论】:
标签: android firebase firebase-realtime-database