gpt4 book ai didi

android - Firebase,相同方法中的第二个 push() 不起作用

转载 作者:行者123 更新时间:2023-11-29 19:44:42 25 4
gpt4 key购买 nike

在我的应用程序中,有一个 Activity ,点击保存按钮后,push() 应在 2 个不同的地方制作 2 组数据。 , 因为在这两个地方都需要一个唯一的 id。

我已经按照 Firebase 指南中的示例代码添加了第二次推送

 String userId = auth.getCurrentUser().getUid().toString();
DatabaseReference reference = FirebaseDatabase.getInstance().getReference();
DatabaseReference firstDatabaseRef = reference.child("first");
DatabaseReference secondDatabaseRef = reference.child("second").child(userId);



String key = firstDatabaseRef.child(userId).push().getKey();
First first = new First(firstAmount,key,firstName);
Map<String, Object> firstValues = first.toMap();


String keySecond = secondDatabaseRef.child(key).push().getKey();
Second second = new Second(secondName,secondAmount,keySecond,key);
Map<String, Object> secondValue = second.toMap();

Map<String, Object> childUpdates = new HashMap<>();
childUpdates.put("/first/" + userId + "/" + key, firstValues);
childUpdates.put("/second/" + userId + "/" + key + "/" + keySecond, secondValue);
reference.updateChildren(childUpdates);

我得到的结果是 first完全符合我的预期,但对于 second ,而不是创建 second/<userId>/<key>/<keySecond>/children ,我明白了:

 "second" : {
//userId
"5TQLPlGf4mbcBRKesQwR30fH1L22" : {
//key
"-KL1030IywlNpkTGC7mU" : {
"secondAmount" : "147",
"Key" : "-KL1030IywlNpkTGC7mU",
"secondName" : "secondName",
"keySecond" : "-KL1030PZlHqD_asSR_8",
}
}
}

而不是将最终的 child 放在另一个唯一的 id 中,顺便说一句,它被记录在 keySecond 中,它们都直接添加到 key 中。这不能被接受,因为每 key必须有很多 keySecond .我希望我能正确解释我的问题。请告诉我我做错了什么。我应该如何修改我的代码,或者我应该完全重新考虑我的数据结构?

最佳答案

这是一个难题。我复制/粘贴了您发布的代码,并为 FirstSecond 创建了 stub 。使用 Firebase 9.0.2 运行会产生如下所示的结果,我相信这是您所期望的。你运行的是不同的 Firebase 版本吗?您发布的 JSON 是否可能是由您发布的代码的不同版本生成的?

{
"first" : {
// userId
"ypx8RB3eglTBRPeUT7laQVQ1PZQ2" : {
// key
"-KL3rXeYrscFQNrVQnHb" : {
"firstAmount" : "FirstAmount",
"firstKey" : "-KL3rXeYrscFQNrVQnHb",
"firstName" : "FirstName"
}
}
},
"second" : {
// userId
"ypx8RB3eglTBRPeUT7laQVQ1PZQ2" : {
// key
"-KL3rXeYrscFQNrVQnHb" : {
// keySecond
"-KL3rXe_JyY9Vz2U-NES" : {
"Key" : "-KL3rXeYrscFQNrVQnHb",
"keySecond" : "-KL3rXe_JyY9Vz2U-NES",
"secondAmount" : "SecondAmount",
"secondName" : "SecondName"
}
}
}
}
}

关于android - Firebase,相同方法中的第二个 push() 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38021477/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com