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

Flutter应用中如何借助Firebase将物流货件数据存储至指定用户账户

基于Firebase实现货件关联指定用户的方案

前置配置

  • Flutter项目已集成firebase_core、cloud_firestore、firebase_auth依赖,完成Firebase初始化
  • 所有用户已接入Firebase Auth体系,每个用户持有唯一的UID标识

两种可选实现方案

方案1:用户文档下嵌套专属货件子集合(更推荐,数据天然隔离)

管理端添加货件时,直接将数据写入目标用户UID对应的子集合路径即可:

// 目标用户的UID(可通过管理端查询用户列表获取对应UID)
String targetUserUid = "xxx";
// 货件数据
Map<String, dynamic> shipmentInfo = {
  "trackingNo": "7849215630",
  "status": "运输中",
  "receiveAddress": "xxx省xxx市",
  "createTime": FieldValue.serverTimestamp()
};
// 写入对应用户的货件子集合
await FirebaseFirestore.instance
  .collection("users")
  .doc(targetUserUid)
  .collection("shipments")
  .add(shipmentInfo);

配套Firebase安全规则配置,可实现仅用户本人能查看自己的货件,仅管理员可写入货件:

rules_version = '2';
service cloud.firestore {
  match /databases/{database}/documents {
    match /users/{uid}/shipments/{shipmentId} {
      allow read: if request.auth != null && request.auth.uid == uid;
      allow write: if request.auth != null && request.auth.token.admin == true;
    }
  }
}

用户端查询自身货件无需额外过滤,直接读取对应子集合即可:

var myShipments = await FirebaseFirestore.instance
  .collection("users")
  .doc(FirebaseAuth.instance.currentUser!.uid)
  .collection("shipments")
  .get();

方案2:根集合加关联字段(适合需要统一管控全量货件的场景)

所有货件存储在根级shipments集合,每个货件文档新增userId字段关联对应用户:

await FirebaseFirestore.instance
  .collection("shipments")
  .add({
    ...shipmentInfo,
    "userId": targetUserUid
  });

用户端查询时加过滤条件筛选自身货件即可:

var myShipments = await FirebaseFirestore.instance
  .collection("shipments")
  .where("userId", isEqualTo: FirebaseAuth.instance.currentUser!.uid)
  .get();

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 00:06:05