如何从Firebase Firestore获取user_id并替换条件中的xxx?
嘿,这事儿不难,我一步步教你怎么实现!
从Firebase获取user_id并替换查询条件里的xxx
要完成这个需求,核心就是先拿到当前用户的唯一ID,再把它套进你的Firestore查询条件里,具体操作如下:
1. 获取当前登录用户的UID(也就是你要的user_id)
在Android项目里,Firebase Auth已经帮我们封装好了获取当前用户的方法,直接用就行:
// 获取Firebase Auth实例,拿到当前登录用户 val currentUser = FirebaseAuth.getInstance().currentUser // 非空判断,避免用户未登录的情况 currentUser?.let { loggedInUser -> // 提取用户的UID,这就是你要的user_id val userId = loggedInUser.uid // 接下来就可以把userId用在查询里啦 }
要是用户还没登录,currentUser会是null,所以记得先确保用户完成登录流程,或者在代码里处理好空值情况哦。
2. 把userId替换到查询条件中
看你截图里的Firestore文档有个user_id字段,那咱们就把查询条件里的xxx换成这个字段名,再把值设为刚拿到的userId,代码示例如下:
// 初始化Firestore实例 val db = FirebaseFirestore.getInstance() // 构建查询:筛选出当前用户的订单 db.collection("orders") .whereEqualTo("user_id", userId) // 这里第一个参数是Firestore里的字段名,第二个是咱们拿到的用户ID .get() .addOnSuccessListener { querySnapshot -> // 查询成功,处理返回的订单数据 for (doc in querySnapshot) { Log.d("Firestore", "${doc.id} 的订单数据:${doc.data}") } } .addOnFailureListener { e -> // 查询失败,打印错误信息 Log.w("Firestore", "查询订单出错啦", e) }
这样一来,查询就只会返回当前登录用户的订单数据啦。
额外提醒
- 如果你的
user_id不是Firebase Auth自带的UID,而是自定义的用户ID,那你得先从用户集合里查询到对应的user_id,再用它来过滤订单。 - 记得在项目里已经配置好Firebase Auth和Firestore的依赖哦,不然代码会报错~
内容的提问来源于stack exchange,提问作者Dragan Dimitrovski
相关产品推荐
相关产品推荐

