我想检查一下当前2个引用中的数据是否存在,但看起来它总是返回真的(总是第一个祝酒词),我认为不检查URLICAR和url平面是否存在,这就是我所拥有的:

mDatabase.child("Users").child(FirebaseAuth.getInstance().getCurrentUser().getUid()).child("URL_CARS").addValueEventListener(new ValueEventListener() {
    @Override
    public void onDataChange(final DataSnapshot dataSnapshotCars) {
                mDatabase.child("Users").child(FirebaseAuth.getInstance().getCurrentUser().getUid()).child("URL_PLANES").addValueEventListener(new ValueEventListener() {
                    @Override
                    public void onDataChange(DataSnapshot dataSnapshotPlanes) {

                        if (dataSnapshotCars!=null && dataSnapshotPlanes!=null) {
                            Toast.makeText(LoginActivity.this, "DATA EXISTS", Toast.LENGTH_SHORT).show();

                        }else{
                            Toast.makeText(LoginActivity.this, "Data DOSNT EXISTS", Toast.LENGTH_SHORT).show();
                        }
                    }

                    @Override
                    public void onCancelled(DatabaseError databaseError) {}
                });

数据库结构
Users +_
        -L4K1JDJS4K2599SK3+_
                            URL_CARS:
                            URL_PLANES:

最佳答案

当您试图读取数据时,firebase总是会返回一个快照,并且它永远不会为空。因为Datasnapshot对象包含两个属性:keyvalue,所以它类似于Datasnapshot(key, value)。当您根据某个关键字查询数据库时,该值可能不存在(您的情况),但您已将密钥传递给DATABAPSCAP对象(这意味着存在密钥)。因此,您得到的数据快照类似于:Datasnapshot(key="URL_PLANES", value=null)。这意味着datasnapshot!=null将始终为真。
你可以做的是,通过使用exists()方法检查值是否存在:

@Override
                    public void onDataChange(DataSnapshot dataSnapshotPlanes) {

                        if (dataSnapshotCars.exists() && dataSnapshotPlanes.exists()) {
                            Toast.makeText(LoginActivity.this, "DATA EXISTS", Toast.LENGTH_SHORT).show();

                        }else{
                            Toast.makeText(LoginActivity.this, "Data DOSNT EXISTS", Toast.LENGTH_SHORT).show();
                        }
                    }

或者获取快照值,然后检查它是否不为空:
@Override
                    public void onDataChange(DataSnapshot dataSnapshotPlanes) {

                        if (dataSnapshotCars.getValue()!=null && dataSnapshotPlanes.getValue()!=null) {
                            Toast.makeText(LoginActivity.this, "DATA EXISTS", Toast.LENGTH_SHORT).show();

                        }else{
                            Toast.makeText(LoginActivity.this, "Data DOSNT EXISTS", Toast.LENGTH_SHORT).show();
                        }
                    }

关于android - 当检查数据是否存在时,Firebase始终为true,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/48190268/

10-11 03:14
查看更多