如何从条目/行中的“项目”中检索条目/行的“ id”?

问题描述 投票:1回答:1

使用AWS Amplify使用React Native(适用于iOS)构建应用程序

我想做一件看似简单的事情,但是我却迷失了如何做:我已经有了一个包含用户信息的表。这是模式:

type Users @model {
  id: ID!
  userName: String
  firstname: String
  weblink: String
  email: String
  mobileNum: String
 .
 .
 .
}


//**Here's my current Query.js**
export const getUsers = `query GetUsers($id: ID!) {
  getUsers(id: $id) {
    id
    userName
    firstname
    weblink
    email
    .
    .
    .
  }
}
`;

当我检查我的AWS控制台时,此表已填充在DynamoDB中。我需要的是能够使用userName从表中获取ID(反之亦然)。该id是在我createUser()时生成的,并且在整个应用程序中都使用它来获取所有用户的信息。但是,当用户在新手机上登录时,该ID不再可用。因此,当他们通过Cognito登录时,我确实知道该用户名,而我需要做的就是检索此ID。因为只有一个唯一的userName,所以它应该只返回一个id

到目前为止,我在想的是:使用GSI(全局二级索引)。因此,将我的架构更改为:

type Users @model
    @key(
       name: "ByUsername"
       fields: ["userName"]
       queryField: "getIdFromUserName"
    )  
{
  id: ID!
  userName: String
  firstname: String
  weblink: String
  email: String
  mobileNum: String
 .
 .
 .
}

然后在我的应用中致电:

const data = await API.graphql(graphqlOperation(getIdFromUserName, { userName }));

5个问题:

1)是否有比GSI更简单的方法?

2)您是如何添加GSI的?还是在AWS控制台中做起来更健壮?

3)我的Query.js应该是什么样?

4)我需要制作自定义解析器,还是足够?

5)我还想念其他东西吗?

amplify push  ?

[使用AWS Amplify使用React Native(适用于iOS)构建应用程序,我想做看起来似乎很简单的事情,但是我却迷失了如何做:我已经有了一个包含用户信息的表。 ...

database amazon-web-services react-native amazon-dynamodb aws-appsync
1个回答
0
投票

1)您不需要创建GSI(全局二级索引)。

© www.soinside.com 2019 - 2024. All rights reserved.