Android 如何在现有Firebase json结构下添加子节点?

Android 如何在现有Firebase json结构下添加子节点?,android,json,firebase,firebase-realtime-database,firebase-authentication,Android,Json,Firebase,Firebase Realtime Database,Firebase Authentication,我正在从事Android项目,在该项目中,我在注册时保存了详细信息(电子邮件、密码、姓名、mob、用户类型、用户ID),现在我必须为每个用户在现有结构中添加额外的详细信息,如long、lat和address。下面是我的Firebase结构的图片,在brown line的帮助下,我提到了我想要添加细节的确切位置 要更新/设置对象的特定文件,您可以按照 您的代码应该是这样的 private void setUserData(String userId, double lat, double lng)

我正在从事Android项目,在该项目中,我在注册时保存了详细信息(电子邮件、密码、姓名、mob、用户类型、用户ID),现在我必须为每个用户在现有结构中添加额外的详细信息,如long、lat和address。下面是我的Firebase结构的图片,在brown line的帮助下,我提到了我想要添加细节的确切位置


要更新/设置对象的特定文件,您可以按照

您的代码应该是这样的

private void setUserData(String userId, double lat, double lng) {

    Map<String, Object> userUpdates = new HashMap<>();
    userUpdates.put("/users/" + userId + "/name_you_want/address", "Groove Street 2");
    userUpdates.put("/users/" + userId + "/name_you_want/lat", lat);
    userUpdates.put("/users/" + userId + "/name_you_want/lng", lng);

    mDatabase.updateChildren(userUpdates, /*Add a complete listener if wanted*/);
}
private void setUserData(字符串userId、双lat、双lng){
Map userUpdates=newhashmap();
userUpdates.put(“/users/”+userId+“/name\u you\u want/address”,“Groove Street 2”);
userUpdates.put(“/users/”+userId+“/name\u you\u want/lat”,lat);
userUpdates.put(“/users/”+userId+“/name\u you\u want/lng”,lng);
mDatabase.updateChildren(userUpdates,/*如果需要,添加一个完整的侦听器*/);
}

编辑:为了避免额外的id,只需指定节点名称,只需替换“name\u you\u want”

即可更新/设置可遵循

您的代码应该是这样的

private void setUserData(String userId, double lat, double lng) {

    Map<String, Object> userUpdates = new HashMap<>();
    userUpdates.put("/users/" + userId + "/name_you_want/address", "Groove Street 2");
    userUpdates.put("/users/" + userId + "/name_you_want/lat", lat);
    userUpdates.put("/users/" + userId + "/name_you_want/lng", lng);

    mDatabase.updateChildren(userUpdates, /*Add a complete listener if wanted*/);
}
private void setUserData(字符串userId、双lat、双lng){
Map userUpdates=newhashmap();
userUpdates.put(“/users/”+userId+“/name\u you\u want/address”,“Groove Street 2”);
userUpdates.put(“/users/”+userId+“/name\u you\u want/lat”,lat);
userUpdates.put(“/users/”+userId+“/name\u you\u want/lng”,lng);
mDatabase.updateChildren(userUpdates,/*如果需要,添加一个完整的侦听器*/);
}

编辑:为了避免额外的id,只需指定节点名称,只需替换“name\u you\u want”

即可添加另一个节点。如图所示。很抱歉打扰您。不像我想的那样。我不确定你想实现什么,你想在用户内部创建一个名为extra的属性,并在地址、纬度和经度三个字段中嵌套?像这样
“-Knn-Un-JZ94ZIj5sOVfaddclose:{“额外”:{“地址”:“街道测试N3”,“lat”:12.5,“lng”:45.2},“名称”:“测试用户”}
是的,这正是我想要的。但它正在添加另一个节点,该节点的id为segrated,位于这三个值之下。我想要的是这样的数据库用户38b0a80e-ea98-4dc6-880e-efe416ca9818电子邮件:star@gmail.commobileNumber:“9876543210”密码:Pass@123“userId:”38b0a80e-ea98-4dc6-880e-efe416ca9818“userName:”star“userType:”Customer”-KnnSdC_m3gLDhjFT2SI地址:”“lan:”lon:”这里的userId是什么意思?当我使用FirebaseUser user=FirebaseAuth.getInstance().getCurrentUser()时;用于获取当前登录用户,它将为当前用户添加详细信息。我想如果我可以得到当前登录用户的userid,我可以在该特定节点下添加额外的值。好的,使用key也无法实现我想要的。它将节点添加为“-Kns-…”:{}“32s4r24..:{}这两种方式都只是添加了另一个节点。如图所示。很抱歉打扰您。不像我想的那样。我不确定你想实现什么,你想在用户内部创建一个名为extra的属性,并在地址、纬度和经度三个字段中嵌套?像这样
“-Knn-Un-JZ94ZIj5sOVfaddclose:{“额外”:{“地址”:“街道测试N3”,“lat”:12.5,“lng”:45.2},“名称”:“测试用户”}
是的,这正是我想要的。但它正在添加另一个节点,该节点的id为segrated,位于这三个值之下。我想要的是这样的数据库用户38b0a80e-ea98-4dc6-880e-efe416ca9818电子邮件:star@gmail.commobileNumber:“9876543210”密码:Pass@123“userId:”38b0a80e-ea98-4dc6-880e-efe416ca9818“userName:”star“userType:”Customer”-KnnSdC_m3gLDhjFT2SI地址:”“lan:”lon:”这里的userId是什么意思?当我使用FirebaseUser user=FirebaseAuth.getInstance().getCurrentUser()时;用于获取当前登录用户,它将为当前用户添加详细信息。我想如果我可以得到当前登录用户的userid,我可以在该特定节点下添加额外的值。好的,使用key也无法实现我想要的。它将节点添加为“-Kns-…”:{}“32s4r24..:{}两种方式