Firebase Atomic写入多个位置错误

时间:2018-02-26 14:41:21

标签: java android firebase-realtime-database

我正在使用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;

1 个答案:

答案 0 :(得分:0)

你正在呼叫setValue,它不接受密钥中的路径;它只接受属性名称和值。最简单的解决方法是使用updateChildren(...),它接受​​密钥中的路径:

myRefwritetoDB2345.updateChildren(m)...

或者您可以继续使用setValue(...),但在这种情况下,您需要为更深层次的值创建嵌套地图。