Java android firebase db,检查id重复问题
我想检查身份证是否重复 我想做身份证重复检查代码。Java android firebase db,检查id重复问题,java,android,database,firebase,Java,Android,Database,Firebase,我想检查身份证是否重复 我想做身份证重复检查代码。 因此,我通过使用sid=id.getText().toString().trim()从用户处获取键入的id 然后制作jsontreesFirebaseDatabase.getInstance().getReference().child(“用户”).child(“id”).setValue(“添加”) 通过使用child()方法… 并使用setvalue()方法输入值。 因为无法使用ondatachange()方法。。。(我认为这种方法只有在有
因此,我通过使用
sid=id.getText().toString().trim()从用户处获取键入的id代码>
然后制作json
treesFirebaseDatabase.getInstance().getReference().child(“用户”).child(“id”).setValue(“添加”)代码>
通过使用child()方法…
并使用setvalue()
方法输入值。
因为无法使用ondatachange()
方法。。。(我认为这种方法只有在有数据时才有效,所以我放了一些没有用的数据)稍后我将删除setvalue()
方法中的值(即使没有更改,是否还有其他方法可以使用…我需要检查db内容)
无论如何if(data.getValue()==sid)
此部分
我想它可以检查id…
但它不起作用
12-25 21:06:00.771 6700-6700/com.example.pc.login D/myTag:{id=add}
android日志看起来像这样。。。id是子部分。。。加起来就是我放的值
这是getvalue()
方法的结果
总结
:
1.如何将用户id放入firebase
db
2.如何获取除子零件外的唯一id值
当我使用getvalue()
方法时。它接受子名称和我输入的值
所以如果id存在…用户自制。。。用户应该写另一个。。。
如果不是。。。firebase
db存储用户制作的id
谢谢你阅读。。。帮帮我
idcheckbtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//store the id user created
sid = id.getText().toString().trim();
FirebaseDatabase.getInstance().getReference().child("users").child("id").setValue("add");
FirebaseDatabase.getInstance().getReference().addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for(DataSnapshot data: dataSnapshot.getChildren()){
if (data.getValue()==sid) {
Log.d("myTag",""+dataSnapshot.getChildren());
Toast.makeText(MainActivity.this, "aleady exists",Toast.LENGTH_SHORT).show();
} else {
Toast.makeText(MainActivity.this, "you can use this id",Toast.LENGTH_SHORT).show();
FirebaseDatabase.getInstance().getReference().child("users").child("id").setValue(sid);
Log.d("myTag",""+data.getValue());
}
}
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
}
});
}
});
因为无法使用ondatachange()方法。。。(我认为这种方法只有在有数据的情况下才有效,所以我放了一些没有用处的数据)
连接侦听器时,无论是否有数据,都不会触发一次onDataChange(DataSnapshot DataSnapshot)
方法
如果附加了ValueEventListener
的数据库路径为空/null/不存在,则dataSnapshot.exits()
将返回false
因此,这里可以是您的最终代码:
idcheckbtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
sid = id.getText().toString().trim();
// No need to store the id user created
// FirebaseDatabase.getInstance().getReference().child("users").child("id").setValue("add");
FirebaseDatabase.getInstance().getReference().child(sid).addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
if (dataSnapshot.exists()) {
// sid already exists
} else {
// sid does not exists already
}
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
}
});
}
});
顺便说一下,Firebase数据库的外观如下:
{
"sid_1": "...",
"sid_2": "..."
}
谢谢你友好的回答。但我还是不能理解。您的意思是,无论是否有数据更改,addListener方法都将被激活?我问你这个是因为。。。当我没有在我写的代码中添加一些像“add”这样的词时,这个方法就没有完成。