Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/359.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何正确构造Java代码以将命名键下的值保存到Firebase实时数据库_Java_Android_Firebase_Firebase Realtime Database - Fatal编程技术网

如何正确构造Java代码以将命名键下的值保存到Firebase实时数据库

如何正确构造Java代码以将命名键下的值保存到Firebase实时数据库,java,android,firebase,firebase-realtime-database,Java,Android,Firebase,Firebase Realtime Database,我目前正在编写一个应用程序的一部分,其中用户扫描保存用户UID值的QR码。扫描后,我想在Firebase实时数据库中创建一个新密钥,其中包含与用户相关的信息,该UID称为userInformation。以下是我希望将值存储为的格式示例: 当前,它存储时不使用UserInforomations键,仅使用UID存储,如下所示: 以下是相关代码: case FirebaseVisionBarcode.TYPE_TEXT: { final Da

我目前正在编写一个应用程序的一部分,其中用户扫描保存用户UID值的QR码。扫描后,我想在Firebase实时数据库中创建一个新密钥,其中包含与用户相关的信息,该UID称为userInformation。以下是我希望将值存储为的格式示例:

当前,它存储时不使用UserInforomations键,仅使用UID存储,如下所示:

以下是相关代码:

case FirebaseVisionBarcode.TYPE_TEXT:
            {
                final DatabaseReference ref = FirebaseDatabase.getInstance().getReference();
                userInformations = new ArrayList<>();
                DatabaseReference username = ref.child(item.getRawValue()).child("username");
                DatabaseReference dateOfBirth = ref.child(item.getRawValue()).child("dateOfBirth");

                username.addListenerForSingleValueEvent(new ValueEventListener() {
                    @Override
                    public void onDataChange(DataSnapshot dataSnapshot) {
                        String username = dataSnapshot.getValue(String.class);
                        //Toast.makeText(getApplicationContext(),username, Toast.LENGTH_LONG).show();

                        //it will create a unique id and we will use it as the Primary Key for our UserInfo
                        String id1 = ref.push().getKey();

                        //creating an UserInfo Object
                        UserInformation userInformation = new UserInformation(id1, username);

                        //Saving the Artist
                        ref.child(id1).setValue(userInformation);

                        //displaying a success toast
                        Toast.makeText(getApplicationContext(), username + " has been added", Toast.LENGTH_LONG).show();
                    }
我能够获取名为userInformations的密钥,但它不再保存userInformationName的值,如下所示:


目前,我只是不确定如何构造代码来实现这两个功能。

根据上一篇文章,要实现如下模式:

rootRef
  |
  --- userInformations
         |
         --- pushId
              |
              --- "userInformationId: "-LXO5 ... H-o3-P" 
              |
              --- "userInformationName: "spamemail0100@gmail.com"
请使用以下代码行:

DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
DatabaseReference userInformationsRef = rootRef.child("userInformations");
String userInformationId = userInformationsRef.push().getKey();
String userInformationName = "spamemail0100@gmail.com";
UserInformation userInformation = new UserInformation(userInformationId, userInformationName);
userInformationsRef.child(userInformationId).setValue(userInformation);

因此,基本上您希望将属性的名称从
username
更改为
userInformationName
,对吗?@AlexMamo问题是,这些值被保存为UID键,而不是保存在“userinformations”下。我在上面对第一张图片做了一些更改,试图解决歧义。您说:“当前它没有userinformations键存储”,但我看到该键存在<代码>用户信息操作子项在第二张图片中不存在。如果您不需要puushed键,请删除
push()
调用,对吗?@AlexMamo如果可能的话,我想要唯一的ID键,如第3张图片所示。执行此操作是否需要push()调用?删除push()将意味着userInformationId的值只是“userInformations”,而不是唯一的ID。这样做的问题是没有添加userInformationName。所以您希望有这样的内容:
rootRef->userInformations->pushId->userInformationId和userInformationName
对吗?
DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
DatabaseReference userInformationsRef = rootRef.child("userInformations");
String userInformationId = userInformationsRef.push().getKey();
String userInformationName = "spamemail0100@gmail.com";
UserInformation userInformation = new UserInformation(userInformationId, userInformationName);
userInformationsRef.child(userInformationId).setValue(userInformation);