光环标志
光环基地文档
文档›指南›Firebase 迁移

从 Firebase 迁移

将 Firestore 数据、Firebase Auth 用户和存储桶移动到 Aurabase 的开放高性能基础设施的分步指南。

11分钟 读取·级别 中间·修改于 2026年8月19日
该英文文本是根据法文原文自动生成的,尚未经过审查。
该页面已自动翻译。英文版具有权威性。
#
比较

匹配 Firebase 砖块

Aurabase 用标准、开放、自托管技术取代了每个专有的 Firebase 组件,而无需锁定供应商:

FirebaseAurabaseAurabase 优势

Cloud Firestore更高版本的 PostgreSQL(关系型 + SQL)或 Aurabase NoSQL(MongoDB 风格)

Firebase Auth相同且丰富的相同 OAuth 支持、MFA TOTP、魔术链接、密码

Firebase Storage相同且丰富的 S3 MinIO REST API,具有动态图像转换功能

Cloud FunctionsSameEdge 函数 Deno 标准 (Deno.serve()) + WASM

Security RulesSuperiorPostgres RLS(行级安全性)直接在基中评估

Firebase Realtime DBSameAurabase 实时(CDC、状态、通过 NATS/WebSocket 广播)

#
地图

4步路线图

  1. 架构和数据 — 选择模型(PostgreSQL 关系或 NoSQL 集合)和导入(15 分钟)
  2. 身份验证 — 导出 Firebase Auth 用户并导入 scrypt/bcrypt 哈希值而不重置(10 分钟)
  3. 存储文件 — Cloud Storage 存储桶与 Aurabase Storage 的同步(根据卷而变化)
  4. SDK 替换 — 将 firebase/* 替换为 @aurabase/aurabase-js
#
数据

从 Firestore 到 Aurabase

您可以在 PostgreSQL 中规范化数据,以利用 SQL 和严格类型的强大功能,或者将其直接导入到 Aurabase 的 NoSQL 文档存储 引擎中:

import-firestore.shbash
# 1.将Firestore导出为JSONL文件
npx firestore-export --serviceAccount credentials.json --output firestore-export.jsonl

# 2.导入Aurabase NoSQL引擎
aura db nosql-import firestore-export.jsonl --collection users --project-id <id>

# 3. 生成完整的TypeScript类型
aura db generate > src/aurabase.types.ts
#
授权

无摩擦的用户迁移

由于支持 Firebase 的密码哈希算法(scrypt、bcrypt、Argon2id),您的用户无需重置密码即可保留其凭据:

migrate-auth.shbash
# 从 Firebase CLI 导出用户
firebase auth:export users.json --format=JSON --project my-firebase-app

# 导入 Aurabase Auth(保留哈希值和令牌)
aura auth import users.json --provider firebase --env prod
#
存储

同步 S3 存储桶

Aurabase 存储使用标准 S3 API。您可以使用 rclone 或 aws-cli 实用程序从 Google Cloud Storage 持续同步文件:

sync-buckets.shbash
# 从 GCS 直接传输到 Aurabase 存储
rclone sync gcs:my-firebase-bucket s3:aurabase-storage-bucket \
  --s3-endpoint https://api.aurabase.cloud/v1/storage/$PROJECT_ID \
  --s3-access-key-id $SERVICE_ROLE_KEY \
  --progress
#
代码

更换客户端SDK

comparison.tstypescript
// 之前 (Firebase)
import { getFirestore, doc, getDoc } from 'firebase/firestore'
const snap = await getDoc(doc(db, 'users', 'u1'))
const user = snap.data()

// 之后(Aurabase)
import { createClient } from '@aurabase/aurabase-js'
const { data: user } = await aura.from('users').select('*').eq('id', 'u1').single()
最后更新· 2026年8月19日