java - 在 Firebase 数据库中添加不同的键时遇到问题

标签 java android firebase firebase-realtime-database

我正在为一件简单的事情而苦苦挣扎。我需要将不同的卡号推送到Firebase数据库中,每个卡号都有自己的报价,所以我需要将不同的报价推送到同一张卡。这是通过使用 HashMap() 来完成的,因此,我想要的是能够添加不同的卡号作为不同的键,并在这些卡号内将不同的优惠作为不同的键而不覆盖它。

现在这就是我所拥有的和我想要的。每张卡内的优惠信息应该不同,比如 ofert1、ofert2 等等,卡号也不同。如果我将相同的卡号添加到我用来传递数据的 editText 中,它应该转到同一张卡,并能够在该卡内创建报价。

Database Structure

问题是,如果我继续添加数据,旧数据就会被新数据替换,我只想能够在同一张卡内添加具有不同优惠的不同卡号。

我所做的就是这个

 Map mOffers= new HashMap();
             mOffers.put("codigo_oferta",mStringCodigoOferta);
 Map mCardNumbers= new HashMap();
             mCardNumbers.put(mStringTarjeta, mOffers);
                 mDatabase.child("Locales").child(uid).setValue(mCardNumbers);

更新

我想要的是像使用不同的键的push(),但是在每个卡号内推送不同的卡号和不同的优惠。

此外,如果我将 push() 添加到引用中,它将推送不同的卡,但使用随 secret 钥,但我不想要它,我希望卡是不同的 key 存储不同的报价。

enter image description here

编辑2:现在它的工作方式就像弗兰克的答案,但我没有继续添加优惠,而是将它们替换。

Structure

最佳答案

我想你是在问这个:

Map mOffers= new HashMap();
mOffers.put("ofert1", true);
mOffers.put("ofert2", true);
Map mCardNumbers= new HashMap();
mCardNumbers.put("45672224", mOffers);

mDatabase.child("Locales").child(uid).setValue(mCardNumbers);

或更直接地说:

Map mOffers= new HashMap();
mOffers.put("ofert1", true);
mOffers.put("ofert2", true);
mDatabase.child("Locales").child(uid).child("45672224").setValue(mOffers);

如果您想将现有项目添加到优惠中,您可以在该特定路径上调用 setValue:

mDatabase.child("Locales").child(uid).child("45672224/ofert3").setValue(true);

如果您想添加/更改/删除多个子节点,但保留其他子节点不变,请使用updateChildren()。例如,这会添加 ofert3 并删除 ofert2:

Map mOffers= new HashMap();
mOffers.put("ofert3", true);
mOffers.put("ofert2", null);
mDatabase.child("Locales").child(uid).child("45672224").updateChildren(mOffers);

请注意,这一点我重复了 Firebase 文档中有关 reading and writing dataworking with lists of data 的大部分内容,因此我建议在这些页面上花一些时间。

关于java - 在 Firebase 数据库中添加不同的键时遇到问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49302976/

相关文章:

java - 如何修复 java.util.concurrent.CompletionException : java. lang.StackOverflowError

android - Xamarin.Forms 应用程序中的标签未在 WinPhone 上正确对齐文本

android - 智能手机上的实时图像识别

firebase - 为什么我的void函数不会更新我的int变量?

typescript - Firebase Cloud Functions TS - 未解析的函数/变量/方法

java - Android:将ListView数据存储在Hashmap<String, String>的ArrayList中

java - 扩展 Java EE 应用程序的阶段

java - C# 或 Java(在 android 上的性能)

ios - 所有 iOS 设备均未收到通过 FCM 服务器发送的推送通知

java - 我需要在 WebView 中打开的网页中以编程方式填充文本字段。如何?