使用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)构建应用程序,我想做看起来似乎很简单的事情,但是我却迷失了如何做:我已经有了一个包含用户信息的表。 ...
1)您不需要创建GSI(全局二级索引)。