Firebase与android 2节点具有相同的数据库引用,是否可能?

时间:2018-02-21 17:32:53

标签: java android firebase firebase-realtime-database

我试图避免使用Firebase自然地进行异步布局。所以我试图在一个dataonchanged方法中完成我的方法。

我需要知道是否有可能以及如何使用一个引用来查看2个节点,如here所示。 iv试过像

这样的东西
dataBaseLastIn = FirebaseDatabase.getInstance().getReference("clockInDate" + "clockOutDate");

//和

dataBaseLastIn = FirebaseDatabase.getInstance().getReference("clockInDate");
dataBaseLastIn = FirebaseDatabase.getInstance().getReference("clockOutDate");

//用于将文本设置为一个引用但不能同时设置

的方法
protected void onStart() {
        super.onStart();
        final String uid = FirebaseAuth.getInstance().getCurrentUser().getUid();
        dataBaseLastIn.addValueEventListener(new ValueEventListener(){

            @Override
            public void onDataChange(DataSnapshot dataSnapshot) {
                dateinList.clear();
                dateOutList.clear();
                for (DataSnapshot postSnapshot : dataSnapshot.getChildren()) {
                    Date date = postSnapshot.getValue(Date.class);
                    String datt = date.getDate().toString().trim();
                    String user = date.getCurrUser().toString().trim();
                    if (DateNew.equals(datt) && user.equals(uid)) {
                        dateinList.add(date);
                    } else {
                        dateinList.remove(date);
                    }

                    DateOut dateOut = postSnapshot.getValue(DateOut.class);
                    String dattOut = dateOut.getDate().toString().trim();
                    String userOut = dateOut.getCurrUser().toString().trim();
                    if (DateNew.equals(dattOut) && userOut.equals(uid)) {
                        dateOutList.add(dateOut);
                    } else {
                        dateOutList.remove(date);
                    }
                }

                newList = dateinList;
                outList = dateOutList;
                try {
                    totalINList();
                } catch (ParseException e) {
                    e.printStackTrace();
                }
            }
            @Override
            public void onCancelled(DatabaseError databaseError) {
            }
        });

    }

//设置文字

 public void totalINList() throws ParseException {
        for(int i = 0 ; i < newList.size(); i++) {
            timeDuration.add(newList.get(i).getClockTime());
        }
        Date e = newList.get(newList.size() - 1);
        String timeIn = e.getClockTime();
        txtCurrentTime.setText(timeIn);

        for(int i = 0 ; i < outList.size(); i++) {
            timeDurationOut.add(outList.get(i).getTime());
        }
        DateOut f = outList.get(outList.size() - 1);
        String timeOut = f.getTime();
        txtCurrentTimeOut.setText(timeOut);
    }

可能是一些简单的东西,但我只得到最后一个引用的值,我声明哪个显然有意义,但我想知道是否可以引用一个节点中的两个节点

1 个答案:

答案 0 :(得分:0)

不,你无法实现与Firebase类似的东西。

大多数开发人员的初步回应是尝试&#34;修复&#34;这个asynchronous behavior,我个人建议不要这样做。网络是异步的,越早接受,您就越早了解如何通过现代Web API提高工作效率。