Graphql 在AppSync@auth规则中,如何将ownerField设置为数组中的属性?
假设我有以下AppSync GraphQL模式,其中包含Graphql 在AppSync@auth规则中,如何将ownerField设置为数组中的属性?,graphql,aws-appsync,Graphql,Aws Appsync,假设我有以下AppSync GraphQL模式,其中包含User类型,以及Post类型,其中editors字段设置为User的数组: type User @model @auth(rules: [ { allow: owner } ]) { id: ID! owner: String! username: String! } type Post @model @auth(rules: [ { allow: owner }, # Can
User
类型,以及Post
类型,其中editors
字段设置为User
的数组:
type User
@model
@auth(rules: [
{ allow: owner }
])
{
id: ID!
owner: String!
username: String!
}
type Post
@model
@auth(rules: [
{ allow: owner },
# Can I do this?
# { allow: owner, ownerField: "editors.owner", operations: [update] }
])
{
id: ID!
owner: String!
title: String!
content: String
editors: [User]
}
如何创建
@auth
规则,为编辑器数组中的用户授予更新权限?如果您使用的是amazon Cognito用户池,您应该将Post中的编辑器类型设置为字符串数组,并将值设置为您想要访问的用户的Cognito ID。这是可以解释的
要使编辑器的类型为User,我建议您创建另一个名称不同的参数(例如editorUsers),并按照所述将其连接到用户模型
您的架构应该如下所示:
type User
@model
@key(name: "byUser", fields: ["username"])
@auth(rules: [
{ allow: owner }
])
{
id: ID!
owner: String!
username: String!
}
type Post
@model
@auth(rules: [
{ allow: owner },
{ allow: owner, ownerField: "editors", operations: [update] }
])
{
id: ID!
owner: String!
title: String!
content: String
editors: [String]
editorsUsers: [User] @connection(keyName: "byUser", fields: ["id"])
}