我需要关于检查值是否已存在于数据库中的帮助,以便用户在更新它时不能将其更改为相同的号码,如独特IDFirebase Android - 检查值是否已存在
我一直在寻找一个解决方案的小时,但我找不到任何工作。
我需要关于检查值是否已存在于数据库中的帮助,以便用户在更新它时不能将其更改为相同的号码,如独特IDFirebase Android - 检查值是否已存在
我一直在寻找一个解决方案的小时,但我找不到任何工作。
正如之前建议您应该有一个数据结构,一个索引列表,为什么?因为当你有这么多的ID这将是一个更好的查询。不过,我认为你想要做的是对以前的建议的补充。
你所要做的就是使用单个事件监听器,如果datasnapshot不为null,那么值就存在。关键是查询您需要的ID:
DatabaseReference root = FirebaseDatabase.getInstance.getReference();
DatabaseReference reference = root.child("Test").oderByChild("ID").equalsTo(someId);
reference.addSingleValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
if (dataSnaphot != null) {
//This means the value exist, you could also dataSnaphot.exist()
}
}
//More auto generated code
);
的dataSnapshot
是一堆的对象,因为查询可以匹配不止一个结果。你可以在它的内部循环,如果你需要它们各自的价值:
public void onDataChange(DataSnapshot dataSnapshot) {
if (dataSnaphot != null) {
for (DataSnapshot children : dataSnaphot.getChildrens()) {
YourModel yourModel = children.getValue(YourModel.class);
}
}
}
要做到这一点,我建议你创建一个名为userIds
另一个节点。每次创建新用户时,只需在此新部分中添加用户标识即可。这个新的部分应该是这样的:
Firebase-root
--- userIds
--- Id101: true
--- Id102: true
然后只是把听者这个新节点的节点上和dataSnapshot对象使用exists()
方法。
您是确实说得对数据结构,但为什么不为存在的方法制定数据库规则? –
这是最简单的方法。 –
ID是否连接到用户? –
例如,如果目前的ID是102,他们将无法将其更改为101 –