【问题标题】:Programmatically creating Faunadb child database以编程方式创建 Faunadb 子数据库
【发布时间】:2025-07-27 22:15:02
【问题描述】:

您好,我是 Faunadb 的新手,正在尝试多租户应用程序。可以选择从动物外壳创建子数据库。但我的想法是,当用户注册时,会自动创建具有该用户名的子数据库。

我在那里搜索了文档,但不知道。是否有可能来自 React、Vue 等前端 JS 库或 Nodejs 中的 API?

先谢谢了。

【问题讨论】:

  • 遇到同样的问题

标签: multi-tenant faunadb


【解决方案1】:

是的,您可以使用CreateDatabase 以编程方式创建子数据库。这里有两点需要注意:

  • 您用于创建子数据库的密钥必须具有 admin role,因此您需要从安全的后端节点服务器执行此操作。
  • 您连接到动物群中的哪个数据库由您用于连接的密钥定义,因此您必须为新的子数据库生成并使用另一个密钥。

这就是代码的样子:

// Connect to the parent database
const parentFauna = new faunadb.Client({
  secret: FAUNA_ADMIN_KEY
})

// Create child database and retrieve a new key for it
const { secret } = await parentFauna.query(
  Do(
    CreateDatabase({
      name: "example"
    }),
    CreateKey({
      database: Database("example"),
      role: "server"
    })
  )
)

// You can now connect to the child database
const childFauna = new faunadb.Client({
  secret: secret
})

【讨论】:

    【解决方案2】:

    您可以使用JS driver(它不是特定于框架的)创建子数据库并使用动物群的Create* functions 设置其架构。

    【讨论】:

    • 感谢您的回复。我已经在反应应用程序中应用了这两个并成功创建了主数据库。儿童数据库没有运气。你有什么例子吗?再次感谢。
    • 我没有可以分享的代码。此外,我不会在注册期间自动创建子数据库。那么问题出在哪里:CreateDatabase、CreateKey、CreateCollection、CreateIndex?
    • 是创建数据库。如何使用 CreateDatabase 在特定父数据库或活动数据库下创建子数据库?我还没有找到任何代码或解决方案。
    • 好的,您需要了解密钥/令牌是特定于数据库的。此外,大多数 FQL 函数专门作用于密钥的数据库。因此,您 1- 连接到父数据库,2- CreateDatabase,3- CreateKey,4- 使用您在 #3 中获得的密钥创建一个可以准备子架构的新客户端。
    • @VirgarPoulsen 不走运。
    最近更新 更多