このエラーはなぜ発生しますか?デバッグモードでは、キーに特殊文字はありません。 '。'はなく、パスに必要な '/'だけです。それはうまくいきました。データベースを一掃しただけで、タイトルのエラーで再度実行します。私のコード:
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"
も、私の古いコード同じエラーで、複数のデータの更新が機能しません。私は何が起こっているのか分かりません。
キーは/を含んではいけません。ここではっきりしないことは何ですか? –
これは鍵ではありませんが、これはfirebaseがサポートする深いパスですが、古いfirebaseのバージョンとしてkeyを呼び出し続けます。なぜhttps://firebase.googleblog.com/2015/09/introducing-multi-location-updates-and_86.html –
の古いバージョンのfirebase(Android(2.4.0))からブログを読んでいるのですか? )。最新のバージョンは10.0.xです。最新のAPIを確認してください –