【问题标题】:Graphql schema code to view user profiles用于查看用户配置文件的 Graphql 架构代码
【发布时间】:2021-10-11 16:53:24
【问题描述】:

我是 Graphql 的新手,实际上正在学习教程。我正在 React Native 中构建一个项目,并为我的后端使用 AWS Amplify 和 Graphql。我需要对正在遵循的教程进行一些更改,我希望用户能够在他们的联系人列表中查看其他用户的用户资料,只是 Instagram 或 Facebook。 在我的 schema.graphql 我有以下代码:

type User @model {
  id: ID!
  name: String!
  imageUri: String
  username: String!
  email: String!
}
但我不知道为用户配置文件编写的下一个代码以及用户查看其他用户用户配置文件的关系。 我已经能够使用以下代码列出联系人:

useEffect(() => {
        const fetchUsers = async () => {
            try {

                const usersData = await API.graphql(
                    graphqlOperation(
                        listUsers
                    )
                )
                setUsers(usersData.data.listUsers.items);

            } catch (e) {
                console.log(e);
            }
        }
        fetchUsers();
    }, [])

我需要关于如何在用户点击联系人列表时查看用户个人资料的指南。

【问题讨论】:

  • listUsers 查询返回什么?类型是什么?在users 提供的定义类型中,我没有关注items 的来源。这让我假设定义了另一种类型?请提供listUsers 的代码。还是我错过了真正的问题? users 及其关注者的关系类型是什么?
  • 我想users 有一组followers 和他们的ids,那些ids 可用于然后执行一个可能包含ids 列表的查询结果将是一组user 类型的集合/列表,其中将在您的帖子开头列出数据。

标签: javascript react-native graphql aws-amplify graphql-js


【解决方案1】:

你必须在你的模型中添加“auth”规则

type User @model 
          @auth(
          rules: [

        #this is for logged-in user. cognito user is default for provider
       
        # In order to prevent private users from creating, another rule must be set for creating
        { allow: private, operations: [read] }
        # default provider is cognito
        { allow: private, provider: iam, operations: [read, create, update, delete] }
        # Only Owner can update its own data
        { allow: owner, ownerField: "username", operations: [update] }
    ]
)  {


      id: ID!
      name: String!
      imageUri: String
      username: String!
      email: String!
}

在上面的代码中,我定义了两个认证规则。一个是 Cognito 用户,他只能阅读,另一个是“iam”用户,拥有更多权限。

【讨论】:

    猜你喜欢
    • 2017-10-10
    • 1970-01-01
    • 2012-09-20
    • 2019-04-07
    • 2017-02-17
    • 2021-06-26
    • 1970-01-01
    • 2019-04-26
    • 2016-09-12
    相关资源
    最近更新 更多