首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >返回空值的数据快照

返回空值的数据快照
EN

Stack Overflow用户
提问于 2021-09-19 13:43:07
回答 1查看 73关注 0票数 0

我使用两个事件侦听器,一个在另一个中。第一个是检查用户是否在数据库中,第二个是显示数据库中的用户数。

代码语言:javascript
复制
Query queries=database.child("songs").orderByChild("user").equalTo(userauth.getEmail());

ValueEventListener eventListener = new ValueEventListener() {
    @Override
    public void onDataChange(DataSnapshot dataSnapshot) {
        if(!dataSnapshot.exists()) {
            //create new user

            database.addValueEventListener(new ValueEventListener() {
                @Override
                public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
                    if (dataSnapshot.exists()) {
                        numOfUsers = dataSnapshot.child("users").getValue(int.class);
                        userinfo.setText(String.valueOf(numOfUsers));
                    }
                }

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

    @Override
    public void onCancelled(DatabaseError databaseError) {}
};
queries.addValueEventListener(eventListener);

但是我一直收到这个错误:

代码语言:javascript
复制
java.lang.NullPointerException: Attempt to invoke virtual method 'int java.lang.Integer.intValue()' on a null object reference
    at com.example.passiveincome.RegistrationActivity$1$1.onDataChange(RegistrationActivity.java:76)
    at com.google.firebase.database.core.ValueEventRegistration.fireEvent(ValueEventRegistration.java:75)
    at com.google.firebase.database.core.view.DataEvent.fire(DataEvent.java:63)
    at com.google.firebase.database.core.view.EventRaiser$1.run(EventRaiser.java:55)
    at android.os.Handler.handleCallback(Handler.java:873)
    at android.os.Handler.dispatchMessage(Handler.java:99)
    at android.os.Looper.loop(Looper.java:193)
    at android.app.ActivityThread.main(ActivityThread.java:6669)
    at java.lang.reflect.Method.invoke(Native Method)
    at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858)

这是我的数据库的照片:

显然,我有一个包含整数的"users“字段。那我哪里错了呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-09-19 14:06:13

问题出在这里:

代码语言:javascript
复制
Query queries=database.child("songs").orderByChild("user").equalTo(userauth.getEmail());

在数据库的根目录中没有节点songs,因此database.child("songs")不匹配任何节点。

也没有子属性user。我假设您正在寻找users (复数),但是数据库无法知道这一点。

您的查询需要是:

代码语言:javascript
复制
database = FirebaseDatabase.getInstance().getReference();
Query queries=database.orderByChild("users").equalTo(0);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69243815

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档