写入Firebase数据库时出现NullPointerException

时间:2019-01-10 12:36:21

标签: android firebase firebase-realtime-database nullpointerexception

我正在尝试向Firebase数据库中的用户添加一项,但是每次尝试访问要写入数据的位置时,我都会不断收到NullPointerException。此位置尚不存在(因为我需要先向其中写入数据);但是,在添加“ userID”部分并在其下添加信息时,这不是问题,例如:

database = FirebaseDatabase.getInstance();
userReference = database.getReference("accounts");
DatabaseReference currentUserDB = userReference.child(user.getUid());

currentUserDB.child("name").setValue(name);

代码的上面部分添加了带有用户ID的密钥,然后在其中添加了用户名。这类似于我下一步要做的事情。

我想做的是添加一个名为“ item”的部分,并在其中添加带有值名称的“ first”。像这样的this

在用户首先单击按钮以运行此代码之前,键“ item”和“ first”不存在。此代码还应该在项目“ second”上工作,依此类推。

database = FirebaseDatabase.getInstance();
DatabaseReference dbR = database.getReference("accounts").child(uid);
reference = dbR.child("item");

DatabaseReference databaseReference = reference.child("test");

databaseReference.child("name").setValue(name);

我在此行得到一个NullPointerException:

DatabaseReference databaseReference = reference.child("test");

我不确定为什么。

我确信已经以某种形式回答了该问题,因为它看起来是如此简单,但是我还没有见过讨论一次将两个密钥同时写入数据库的任何地方。

任何帮助表示赞赏。如果这是重复的话,我深表歉意。 欢呼声

编辑:我知道NullPointerException是什么,我只是不知道为什么在这种情况下会得到一个。这两套代码非常相似,我不确定为什么第二套代码给我一个错误。

2 个答案:

答案 0 :(得分:1)

您应该这样编写代码:

DatabaseReference reference = FirebaseDatabase.getInstance().getReference();
    reference.child("accounts")
            .child("test")
            .child("item")
            .child("first")
            .child("name")
            .setValue(name);

答案 1 :(得分:0)

如果可能的话,将代码放在这里,将会有所帮助。

我认为如果“ item”和“ first”不存在,则不能将其用作引用,因为该节点不存在。

您需要先使用reference = dbR.setValue("item"),然后才能将use用作引用。