猿问

尝试组合 orderByChild() 和 startAt() 时使用 null 获取值

在尝试使用 orderByChild() 和 startAt() 对数据进行排序和过滤的代码时,将 Value 设为 null

我在下面附上了数据结构和结果的图像,我以数据快照的形式获得了这些图像。

http://img2.mukewang.com/61c30ae50001378d09020020.jpg

代码如下


Query queryMeal = FirebaseDatabase.getInstance().getReference("meals");

            queryMeal.orderByChild("meal_name").startAt("ggh").addListenerForSingleValueEvent(new ValueEventListener() {

                @Override

                public void onDataChange(@NonNull DataSnapshot dataSnapshot) {

                    Log.e("Query DataSnapShot",""+dataSnapshot.toString());

                }


                @Override

                public void onCancelled(@NonNull DatabaseError databaseError) {


                }

            });


倚天杖
浏览 167回答 2
2回答

开满天机

要解决此问题,请更改以下代码行:Query queryMeal = FirebaseDatabase.getInstance().getReference("meals");ueryMeal.orderByChild("meal_name").startAt("ggh").addListenerForSingleValueEvent();到String uid = FirebaseAuth.getInstance().getCurrentUser().getUid();Query queryMeal = FirebaseDatabase.getInstance().getReference().child("meals").child(uid);ueryMeal.orderByChild("meal_name").startAt("ggh").endAt("ggh" + "\uf8ff").addListenerForSingleValueEvent();编辑:DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();DatabaseReference mealsRef = rootRef.child("meals");ValueEventListener valueEventListener = new ValueEventListener() {    @Override    public void onDataChange(DataSnapshot dataSnapshot) {        for(DataSnapshot uidSnapshot : dataSnapshot.getChildren()) {            String uid = uidSnapshot.getKey();            DatabaseReference uidRef = rootRef.child("meals").child(uid).startAt("ggh").endAt("ggh" + "\uf8ff");            ValueEventListener eventListener = new ValueEventListener() {                @Override                public void onDataChange(DataSnapshot dataSnapshot) {                    for(DataSnapshot ds : dataSnapshot.getChildren()) {                        String mealName = ds.child("meal_name").getValue(String.class);                        Log.d(TAG, mealName);                    }                }                @Override                public void onCancelled(@NonNull DatabaseError databaseError) {                    Log.d(TAG, databaseError.getMessage());                }            };            uidRef.addListenerForSingleValueEvent(eventListener);        }    }    @Override    public void onCancelled(@NonNull DatabaseError databaseError) {        Log.d(TAG, databaseError.getMessage());    }};mealsRef.addListenerForSingleValueEvent(valueEventListener);

杨魅力

在你的 onDataChange 方法中做这样的事情if(dataSnapshot != null){   Log.e("Query DataSnapShot",""+dataSnapshot.getValue().toString());}
随时随地看视频慕课网APP

相关分类

Java
我要回答