【发布时间】:2020-07-06 07:14:56
【问题描述】:
我不熟悉使用 AWS Amplify 和 GraphQL。 也刚刚开始构建 React Native App - 这很有趣!
我有一个名为 TimePeriods 架构的表,它看起来像这样
type TimePeriod @model {
id: ID!
name: String!
startYear: String!
endYear: String!,
artworks: [ArtWorkTimePeriod] @connection (name: "TimePeriodArtWorks") #Many to Many Relationship
artists: [ArtistTimePeriod] @connection (name: "TimePeriodArtists") #Many to Many Relationship
}
在放大生成的查询文件中,我有一个名为 listTimePeriods 的函数。
export const listTimePeriods = /* GraphQL */ `
query ListTimePeriods(
$filter: ModelTimePeriodFilterInput
$limit: Int
$nextToken: String
) {
listTimePeriods(filter: $filter, limit: $limit, nextToken: $nextToken) {
items {
id
name
startYear
endYear
artworks {
nextToken
}
artists {
nextToken
}
}
nextToken
}
}
`;
我想要做的是按条件过滤它,例如我想获取 ID 等于 1、2 或 3 的所有时间段的列表。 我假设它可以通过以下方式完成
export async function GetTimePeriodsByIds(idArr=[]){
let filter = {
id: {
eq: [1,2,3]
}
};
return await API.graphql(graphqlOperation(listTimePeriods, {limit: 20, filter:filter}));
}
但我认为你做不到。如果您对此有任何解决方案,那将意味着很多 - 甚至只是像
这样的洞察力- 如果它根本不起作用 - 他们有什么理由决定不实施它吗?
-
在这种情况下使用for循环并调用会更好
等待 API.graphql(graphqlOperation(getTimePeriod, {id: id}));
还是自己获取整个列表并将其过滤掉会更好吗?更好的意思是效率 - 也许它取决于将在 TimePeriod 表中列出的数据数量(如果有很多条目,那么从 DB 中一一获取,如果少量条目全部获取并将其过滤掉?)
【问题讨论】:
标签: react-native graphql aws-amplify graphql-js aws-amplify-cli