Firebase Atomic写入多个位置错误

问题描述 投票:0回答:1

我使用的是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。密钥不得包含'/','。','#','$','['或']'

java android firebase-realtime-database
1个回答
0
投票

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

myRefwritetoDB2345.updateChildren(m)...

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

© www.soinside.com 2019 - 2024. All rights reserved.