DatabaseReference databaseReference = FirebaseDatabase.getInstance().getReference();
String animalUID = animal.getUID();if (animalUID == null) { animalUID = databaseReference.push().getKey();}Map<String,Object> animalData = new HashMap();if(animal.getFavorites()!=null) { for (Map.Entry<String,Boolean> entry : animal.getFavorites().entrySet()) { animalData.put("users-favorites-animals/" + entry.getKey() + "/" + animalUID,animal); }}animalData.put("users-animals/" + animal.getownerUID() + "/" + animalUID,animal);animalData.put("animals/" + animalUID,animal);databaseReference.updateChildren(animalData).addOnCompleteListener(new OnCompleteListener() { @OverrIDe public voID onComplete(@NonNull Task task) { Listener.onSaveAnimalSucess(animal); }}).addOnFailureListener(new OnFailureListener() { @OverrIDe public voID onFailure(@NonNull Exception e) { if (e instanceof FirebaseException) { Listener.onSaveAnimalError(""); return; } Listener.onConnectionError(); }});
这里是animalData键在updateChildren之前的来源:
“动物/ -Kcd_8Tif5EPYUhsceeH”
“用户 – 动物/ LoQ9BkJs2yVC95nFGyo1ft4cqdB2 / -Kcd_8Tif5EPYUhsceeH”
即使是没有多数据更新的旧代码也无法正常工作,但错误相同.我不知道是怎么回事.
解决方法 不确定这是否会对你有所帮助,但我使用的是一些与我的个人物品发脾气的组件:D(例如,primeng自动选择框为我的数据添加了类似’_ $visited’的内容).如果有人面临同样的问题并且您的对象中并不真正需要这些键,您可以考虑调用以下函数. (你需要为它做lodash)
private makeObjectGreatAgain(object: any) {// removing undefined values from any arrays!// and some variables which are added by different components// firebase not allowed keys: ".","#","$","/","[",or "]"object = JsON.parse(JsON.stringify(object),(key,val) => { if (!_.includes(key,'.') && !_.includes(key,'#') && !_.includes(key,'$') && !_.includes(key,'/') && !_.includes(key,'[') && !_.includes(key,']')) { return val; } else { console.log('removing invalID key: ' + key + ' val: ' + val); }});return object;}总结
以上是内存溢出为你收集整理的android – Firebase无效密钥:.密钥不得包含’/’,’.’,’#’,’$’,'[‘或’]’全部内容,希望文章能够帮你解决android – Firebase无效密钥:.密钥不得包含’/’,’.’,’#’,’$’,'[‘或’]’所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)