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

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

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

为什么会发生这种错误?在调试模式下,键中没有特殊字符,没有’.’,只有路径所需的’/’.它工作得很好,我只是擦了我的数据库,然后我再次运行标题中的错误.我的代码:@H_403_1@

DatabaseReference databaseReference = FirebaseDatabase.getInstance().getReference();@H_403_1@

@H_403_1@

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之前的来源:@H_403_1@

“动物/ -Kcd_8Tif5EPYUhsceeH”@H_403_1@

“用户 – 动物/ LoQ9BkJs2yVC95nFGyo1ft4cqdB2 / -Kcd_8Tif5EPYUhsceeH”@H_403_1@

即使是没有多数据更新的旧代码也无法正常工作,但错误相同.我不知道是怎么回事.@H_403_1@

解决方法:@H_403_1@

不确定这是否会对你有所帮助,但我使用的是一些与我的个人物品发脾气的组件:D(例如,primeng自动选择框为我的数据添加了类似’_ $visited’的内容).
如果有人面临同样的问题并且您的对象中并不真正需要这些键,您可以考虑调用以下函数. (你需要为它做lodash)
@H_403_1@

@H_403_1@

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/1117368.html

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

发表评论

登录后才能评论

评论列表(0条)

保存