如果数据不存在,Firebase会添加

时间:2017-03-02 21:40:48

标签: android firebase firebase-realtime-database

第一次提问者,所以在这里。我正在尝试为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,如果我不在没有检查的情况下添加数据,那么永远不会有“数据更改”!

有人可以给我一些如何解决这个问题的指导吗?有没有办法获得数据快照而不必触发监听器?

0 个答案:

没有答案