我正在评估 Firebase Data Connect,但在使用 insertMany 功能时遇到了一项非常基本的任务。
我想创建一个突变,将权限分配给系统中的新角色。让我们想象一下以下 GQL 架构:
# Permission
type Permission
@table(
name: "Permission"
singular: "permission"
plural: "permissions"
key: ["id"]
) {
id: UUID! @col(name: "permission_id") @default(expr: "uuidV4()")
name: String! @unique
type: String!
description: String!
}
# Role
type Role @table(name: "Role", singular: "role", plural: "roles", key: ["id"]) {
id: UUID! @col(name: "role_id") @default(expr: "uuidV4()")
name: String! @unique
description: String!
}
# Role and Permission many-to-many relationship
type RolePermission
@table(
key: ["role", "permission"] # join key for many-to-many
) {
role: Role! @ref
permission: Permission! @ref
}
数据连接能够执行 insertMany 操作,但是...我不知道如何编写执行此操作的突变。我尝试了以下方法:
mutation assignPermissionsToRole($rolePermissions: [RolePermission_Data!]!) {
rolePermission_insertMany(data: $rolePermissions)
}
但它会抛出以下错误:
mutation, assignPermissionsToRole On $rolePermissions: cannot use RolePermission_Data as a variable (please use one variable for each field instead, ex:
{foo: $foo})
有人知道如何使用 insertMany 选项吗?
老实说..我发现这也很烦人。这并不是唯一受到限制的地方..我什至不能将 @auth 指令与令牌一起使用。
但是..如果您从云函数中执行此操作,并且基本上将查询生成为字符串,而不是将该数组作为变量传递..它可以工作。
丑陋的解决方法:/