我目前正在将 neo4j 和 graphql 与 Apollo 服务器一起使用。
我有以下类型:
type Person {
id: ID! @id
externalId: ID
name: String!
}
extend type Person
@auth(
rules: [
{ operations: [CREATE, UPDATE], bind: { externalId: "$jwt.sub" } }
]
)
当我尝试进行以下突变时:
mutation Mutation($input: [PersonCreateInput!]!) {
createPeople(input: [
{
"name": "abc"
}
]) {
people {
name
}
}
}
我从 Neo4j 收到一个 FORBIDDEN 错误。
我调试了一些代码,看起来这就是正在转换的内容:
CALL {\n' +
'CREATE (this0:Person)\n' +
'SET this0.id = randomUUID()\n' +
'SET this0.name = $this0_name\n' +
'WITH this0\n' +
'CALL apoc.util.validate(NOT(this0.externalId IS NOT NULL AND this0.externalId = $this0_auth_bind0_externalId), "@neo4j/graphql/FORBIDDEN", [0])\n' +
'RETURN this0\n' +
'}\n' +
'RETURN \n' +
'this0 { .name } AS this0',
因此,如果我正确理解这一点,如果 externalID 为 NULL 并且 externalID 与我的 jwt 子值不同,那么它将引发异常。
基本上我想要实现的是:
创建人员节点时,将 externalID 值分配给sub
我的 JWT 的属性值。
我在这里做错了什么?