第一次提问者,所以在这里。我正在尝试为Android和Firebase编写一些Java,我需要检查是否存在事件记录,然后将其添加到子项(如果它不存在)。我目前正在使用一个节点来存储事件的特定细节,而另一个节点仅用于城市信息。
这就是我的数据库:
App: {
Details: {
eventName: Name
eventType: Type
eventCity: Location
etc, etc...
}
OnlyCities: {
}
这是为了检查并仅添加新条目到OnlyCities列表:
appRef.addChildEventListener(new ChildEventListener() {
@Override
public void onChildAdded(DataSnapshot dataSnapshot, String s) {
onlyCitiesRef.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for (DataSnapshot data : dataSnapshot.getChildren()) {
if (!data.hasChild(eventCity)) {
onlyCitiesRef.push().setValue(eventCity);
}
else {
Toast.makeText(getApplicationContext(), "City already exists", Toast.LENGTH_SHORT).show();
}
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
}
我的问题是我无法检查OnlyCities以查看是否存在某些东西,因为EventListener的触发器是onDataChange,如果我不在没有检查的情况下添加数据,那么永远不会有“数据更改”!
有人可以给我一些如何解决这个问题的指导吗?有没有办法获得数据快照而不必触发监听器?