为了账号安全,请及时绑定邮箱和手机立即绑定

如何在android Firestore的文档字段中保存文档ID?

如何在android Firestore的文档字段中保存文档ID?

喵喵时光机 2023-11-10 17:02:55
我能够将文档保存到 firestore,但我也想将新保存的文档 ID 保存到同一个文档中,我正在尝试下面的示例,但效果不好 String id = db.collection("user_details").document().getId();                                Map map = new HashMap<>();                               map.put("username", username);                                map.put("email", email);                                map.put("id", id);                                UserRef.document(id).set(map).addOnSuccessListener(new OnSuccessListener<Void>() {                                    @Override                                    public void onSuccess(Void aVoid) {                                        //progressbar invisible;;                                    }                                });
查看完整描述

2 回答

?
哈士奇WWW

TA贡献1799条经验 获得超6个赞

每次您拨打电话时document(),您都会获得一个新的唯一 ID。因此,请务必只调用一次,这样您就只处理一个 ID。

首先获取文档参考:

DocumentReference ref = db.collection("user_details").document();

获取其ID:

String id = ref.getId();

然后编写要发送的数据:

Map map = new HashMap<>();
map.put("username", username);
map.put("email", email);
map.put("id", id);

最后,将该数据放入前面引用的文档中:

ref.set(map)...


查看完整回答
反对 回复 2023-11-10
?
森林海

TA贡献2011条经验 获得超2个赞

为了能够将您的 ID 保存在文档中,您首先需要创建一个文档。问题是 ID 是在创建文档的同时创建的。但我们可以首先创建 ID,然后像这样发送我们的文档:


val matchRef = mFirestore.collection(FirebaseHelp().USERS).document(user.uid).collection(FirebaseHelp().MATCHES).document() //notice this will not create document it will just create reference so we can get our new id from it

val newMatchId = matchRef.id //this is new uniqe id from firebase like "8tmitl09F9rL87ej27Ay" 

该文档尚未创建,我们只是有一个新的 id,所以现在我们将此 id 添加到 POJO 类中(或者我猜它是 POKO,因为它是 Kotlin)。


class MatchInfo(

        var player1Name: String? = null,

        var player2Name: String? = null,

        var player3Name: String? = null,

        var player4Name: String? = null,

        var firebaseId: String? = null, //this is new added string for our New ID

)

现在我们创建要上传到 firebase 的对象:


val matchInfo = MatchInfo(player1?.mName, player2?.mName, player3?.mName, player4?.mName, newMatchId)

或者我们在将对象发送到 firebase 之前设置新的 id


matchInfo.firebaseId = newMatchId

现在我们使用新 ID 将对象发送到 firebase,如下所示:


val matches = mFirestore.collection(FirebaseHelp().USERS).document(user.uid).collection(FirebaseHelp().MATCHES)

matches.document(newMatchId).set(matchInfo) // this will create new document with name like"8tmitl09F9rL87ej27Ay" and that document will have field "firebaseID" with value "8tmitl09F9rL87ej27Ay"



查看完整回答
反对 回复 2023-11-10
  • 2 回答
  • 0 关注
  • 142 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信