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

多Firebase应用连接单个Firestore的电商项目架构搭建咨询

嘿,这个双应用的架构思路挺靠谱的!我来一步步给你拆解怎么搭建这套基于Firebase、React+Next.js的电商系统:

第一步:初始化共享的Firebase核心项目

首先得有一个统一的Firebase项目,作为两个应用的后端支撑:

  • 去Firebase控制台新建一个项目,启用Cloud Firestore(初期可以选测试模式,后续一定要改成严格的安全规则),按需启用Firebase Authentication(给管理员做身份验证)和Cloud Storage(存商品图片)。
  • 提取共享配置:在Firebase控制台的「项目设置」里,找到Web应用的配置代码(就是包含apiKey、authDomain的那个对象),把它存成一个独立的firebase.config.js文件——后面两个应用都会用这个配置,确保它们连接的是同一个Firebase项目。
第二步:搭建管理员后台(Admin App)

用Next.js快速搭建管理端:

  • 初始化项目:执行npx create-next-app@latest admin-app,选你习惯的React/TypeScript配置就行。
  • 集成Firebase:把刚才的firebase.config.js复制到项目里,安装Firebase SDK:npm install firebase,然后初始化Firebase实例。
  • 实现核心管理功能:
    • 管理员身份校验:用Firebase Auth的邮箱密码或Google登录,给授权用户开权限——可以在Firestore里建个admins集合存管理员的UID,或者用Firebase的自定义用户声明来标记管理员。
    • 商品CRUD:用Firestore的API写创建、编辑、删除商品的逻辑,比如addDoc(collection(db, 'products'), productData)就能新增商品。
    • 商品图片上传:用Cloud Storage上传图片,上传成功后把图片URL存在对应的商品文档里。
  • 路由保护:在Next.js里用Middleware或者getServerSideProps做权限校验,非管理员用户直接跳转到登录页,不让访问管理页面。
第三步:搭建前端店铺应用(Store App)

同样用Next.js搭建用户端:

  • 初始化项目:npx create-next-app@latest store-app,配置和Admin App保持一致就行。
  • 集成Firebase:复制同一个firebase.config.js,安装Firebase SDK。
  • 实现店铺核心功能:
    • 商品展示:从Firestore的products集合拉取数据,用Next.js的静态生成(SSG)或者服务器组件(Server Components)来预渲染页面,提升加载速度。
    • 购物车与订单:购物车可以用Firestore的用户专属集合(比如users/{uid}/cart)或者本地存储;用户下单后把订单数据存到orders集合,Admin App就能实时看到并处理。
  • 关键的安全规则配置:这一步一定要做,防止普通用户篡改数据!比如Firestore规则可以这么写:
service cloud.firestore {
  match /databases/{database}/documents {
    // 普通用户只读商品,管理员才能修改商品
    match /products/{product} {
      allow read: if true;
      allow write: if request.auth != null && exists(/databases/$(database)/documents/admins/$(request.auth.uid));
    }
    // 用户只能看自己的订单,管理员能看所有订单
    match /orders/{order} {
      allow read, write: if request.auth != null && request.auth.uid == resource.data.userId;
      allow read: if request.auth != null && exists(/databases/$(database)/documents/admins/$(request.auth.uid));
    }
    // 管理员只能修改自己的管理员记录
    match /admins/{admin} {
      allow read, write: if request.auth != null && request.auth.uid == admin;
    }
  }
}
第四步:部署两个应用到不同域名

最后把两个应用分别部署到各自的域名:

  • 部署Admin App:用Vercel(Next.js官方部署平台)最方便,部署时把Firebase的配置用环境变量(比如NEXT_PUBLIC_FIREBASE_API_KEY)配置到Vercel里,不要硬编码。然后绑定你的管理员域名,比如admin.yourshop.com。
  • 部署Store App:同样用Vercel或其他平台,绑定店铺域名,比如yourshop.com。
  • 别忘了在Firebase控制台的「Authentication」->「设置」->「授权域名」里,把两个应用的域名都加进去,不然用户登录会报错。
额外小贴士
  • 环境变量:Firebase的公开配置(apiKey、authDomain这些)本身就是公开的,用NEXT_PUBLIC_前缀的环境变量就行,Next.js会自动把这些变量暴露给客户端。
  • 性能优化:店铺应用用Next.js的ISR(增量静态再生)来缓存商品数据,减少Firestore的读取次数,用户体验更好。
  • 测试:先在本地测试两个应用是否能同步Firestore数据,管理员操作是否能实时同步到店铺,安全规则是否生效。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 03:29:21