我正在使用firebase版本9.8.0
try{
HashMap<String,Object> m;
m=new HashMap<>();
FirebaseDatabase databasewritetoDB234;
DatabaseReference myRefwritetoDB234;
databasewritetoDB234 = FirebaseDatabase.getInstance();
myRefwritetoDB234 = databasewritetoDB234.getReference("pagination").child("products_sub").child("mobile phone").child("apple mobiles");
String key4= myRefwritetoDB234.push().getKey();
m.put("products_sub/mobile phone/apple mobiles/"+key4,new Pagination("akey",(1+1)));
FirebaseDatabase databasewritetoDB2345;
DatabaseReference myRefwritetoDB2345;
databasewritetoDB2345 = FirebaseDatabase.getInstance();
myRefwritetoDB2345 = databasewritetoDB2345.getReference("ck");
myRefwritetoDB2345.setValue(m).addOnCompleteListener(new OnCompleteListener<Void>() {
@Override
public void onComplete(@NonNull Task<Void> task) {
if(task.isSuccessful()&&task.isComplete()){
}else {
}
}
});
}
catch(Exception e){
Log.e("error",e.getMessage());
}
E /错误:密钥无效:products_sub / mobile phone / apple mobiles / -L6LFN1i_84LSn2vrw4l。密钥不得包含&#39; /&#39;,&#39;。&#39;,&#39;#&#39;,&#39; $&#39;,&#39; [& #39;,或&#39;]&#39;
答案 0 :(得分:0)
你正在呼叫setValue
,它不接受密钥中的路径;它只接受属性名称和值。最简单的解决方法是使用updateChildren(...)
,它接受密钥中的路径:
myRefwritetoDB2345.updateChildren(m)...
或者您可以继续使用setValue(...)
,但在这种情况下,您需要为更深层次的值创建嵌套地图。