我有一个注册表(用户名,密码,电话号码)和一个提交按钮。我想检查此用户名之前是否已注册。如果不是,则在表单中创建具有凭据的用户。
数据库结构
- users --- -L3HQjgyXe6iNC0r0Ftr ------ mobile: "+15553334444" ------ password: "yoyo" ------ uid: "-L3HQjgyXe6iNC0r0Ftr" ------ username: "myusername"
当我检查存在的用户名时,我会得到正确的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) {
}
});
}
}
});
答案 0 :(得分:0)
您的代码中一个明显的问题是您正在更新createUser[0]
onDataChange
ValueEventListener
方法,但您正在其外部使用它。
请注意,ValueEventListener
是异步执行的。因此,它将继续执行剩余的代码,而无需等待onDataChange
被调用。
因此,如果您要等待createUser[0]
的更新值,则应从if
onDataChange
代码块
希望这会有所帮助。如果您想让我进一步阐述,请告诉我。
答案 1 :(得分:0)
好的,我弄清楚我的问题代码是什么
import numpy as np
mesh = np.array([[ np.array([[ (np.array([[ 6, 6]], dtype=float),
np.array([[-131.659809],
[-131.659809],
[-131.659809],
[ 52.022239],
[ 52.022239],
[ 52.022239]]),
np.array([[ 189.358345],
[ 187.271049],
[ 185.183753],
[ -29.807736],
[ -31.895032],
[ -33.982328]]))]],
dtype=[('dim', 'O'), ('x', 'O'), ('y', 'O')])]], dtype=object)