能否在单个请求中运行多个FaunaDB事务并提交集合与索引创建命令?
Fauna单次请求同时创建集合和索引的解决方案
Fauna不允许在同一个事务内创建集合和依赖该集合的索引,因为事务执行时集合元数据尚未持久化到全局schema中,索引创建会找不到源集合。要在单次请求内完成两个操作,可采用以下两种方案:
- 方案1:批量提交独立事务
Fauna官方SDK支持在单次网络请求中传入多个查询语句,每个语句作为独立事务顺序执行,符合高效提交的需求,JS SDK示例代码如下:client.query([ CreateCollection({ name: "users" }), CreateIndex({ name: "users_by_email", permissions: { read: "public" }, source: Collection("users"), terms: [{field: ["data", "email"]}], unique: true }) ]) - 方案2:SDL schema批量导入
如果你需要批量初始化多个集合、索引等资源,可以编写Fauna Schema Definition Language (SDL) 配置文件,单次上传即可完成所有资源部署,适合项目初始化阶段使用,示例配置如下:collection users { index users_by_email { terms [.email] unique true permissions { read: "public" } } }
内容的提问来源于stack exchange,提问作者Evan Summers
相关产品推荐
相关产品推荐

