You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android Studio中如何获取Firebase Push生成的ID?

解决Firebase Push ID关联存储问题

你现在的核心问题是两次调用push()会生成两个完全独立的唯一ID,所以你当前的代码其实是在用户的Ads节点下新增了一个随机子节点,然后把另一个全新的随机ID存进去,这自然和你之前发布广告的ID不匹配。

正确的思路是:只调用一次push()获取广告节点的唯一ID,把这个ID保存到变量中,再同时完成「发布广告」和「将ID写入用户节点」两个操作。

修正后的代码示例

// 关键:只调用一次push()获取广告节点的引用和对应ID
DatabaseReference adReference = mDatabaseReference.child(TipoAnuncio).push();
String adUniqueId = adReference.getKey();

// 1. 将广告数据写入Firebase广告节点
adReference.setValue(fichaPet);

// 2. 将同一个广告ID写入对应用户的Ads节点
// 推荐用广告ID作为键,值设为true(方便后续快速查询用户的广告)
mDatabaseReference.child("Usuarios").child(userId).child("Ads").child(adUniqueId).setValue(true);

补充说明

如果你更倾向于在用户Ads节点下用自动生成的子节点存储广告ID(而不是用广告ID作为键),可以这样写,但要确保存入的是之前获取的adUniqueId:

// 在用户Ads下新增子节点,值为广告ID
mDatabaseReference.child("Usuarios").child(userId).child("Ads").push().setValue(adUniqueId);

不过第一种用广告ID作为键的方式更实用——后续查询用户的所有广告时,能直接通过键快速定位,也能避免重复存储同一个广告ID。

为什么你的原代码不行?

Firebase的push()方法每次调用都会生成一个基于时间戳的唯一ID,两次调用必然得到不同的结果,所以你原代码里存入的是一个全新的ID,和之前发布广告的ID毫无关联。

内容的提问来源于stack exchange,提问作者Morota

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 06:08:27