如何知道firebase中的child是否为null?

时间:2018-02-15 00:33:32

标签: android firebase firebase-realtime-database firebase-authentication

这是相关的android代码:

mAuth.signInWithEmailAndPassword(email,password).addOnCompleteListener(new OnCompleteListener<AuthResult>() {
                @Override
                public void onComplete(@NonNull Task<AuthResult> task) {
                    if (task.isSuccessful()){
                        mLoginProgress.dismiss();
                        final String current_user_id = mAuth.getCurrentUser().getUid();
                        String deviceToken = FirebaseInstanceId.getInstance().getToken();
                        DatabaseReference itsUser = mUsersDatabaseReference.child(current_user_id);
                        DatabaseReference itsPilot = mPilotsDatabaseReference.child(current_user_id);

我有current_user_id,我想知道它是用户还是飞行员。 所以我有这两个网址: https://console.firebase.google.com/u/0/project/...-96d4e/database/airpal-96d4e/data/Users/mbGyPElqNphTritK5iyN8bXadSK2

https://console.firebase.google.com/u/0/project/...-96d4e/database/airpal-96d4e/data/Pilots/mbGyPElqNphTritK5iyN8bXadSK2

这是状态: 您可以很容易地看到,我的current_user_id是'User'而不是'Pilot'。 我只想通过代码来做。

stat

当我将它们插入到其中一个中的chrome中时,该子项为null,并且其中一个中它具有字段。

我怎么能认出来?

阅读dataSnapshot分别为我提供了所有字段,我更喜欢更清晰的解决方案。感谢

编辑: 解决方案是通过值事件侦听器和仅限snapShot

itsUser.addValueEventListener(new ValueEventListener() {
                        @Override
                        public void onDataChange(DataSnapshot dataSnapshot) {
                            Log.d("dDebug","i'm here");
                            pilotBool = (dataSnapshot.getChildrenCount() == 0);
                        }

                        @Override
                        public void onCancelled(DatabaseError databaseError) {

                        }
                    });

1 个答案:

答案 0 :(得分:2)

在查询数据库以获取包含查询位置内容的快照之前,您无法了解数据库中的任何内容。没有特殊的查询来检查不存在快照的存在。