android – Firebase无效密钥:.密钥不得包含’’,’.’,’#’,’$’,'[‘或’]’

android – Firebase无效密钥:.密钥不得包含’’,’.’,’#’,’$’,'[‘或’]’,第1张

概述为什么会发生这种错误?在调试模式下,键中没有特殊字符,没有’.’,只有路径所需的’/’.它工作得很好,我只是擦了我的数据库,然后我再次运行标题中的错误.我的代码: DatabaseReference databaseReference = FirebaseDatabase.getInstance().getReference(); String animalUid = animal.getUid( 为什么会发生这种错误?在调试模式下,键中没有特殊字符,没有’.’,只有路径所需的’/’.它工作得很好,我只是擦了我的数据库,然后我再次运行标题中的错误.我的代码:

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无效密钥:.密钥不得包含’/’,’.’,’#’,’$’,'[‘或’]’所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1125995.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-30
下一篇 2022-05-30

发表评论

登录后才能评论

评论列表(0条)

保存