Я новичок в использовании AWS Amplify и GraphQL. Также только начали создавать приложение React Native - это очень весело!
У меня есть таблица, называемая схемой 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
}
В файле запросов, сгенерированном с помощью ampify, у меня есть функция 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
}
}
`;
Я пытаюсь отфильтровать это по условию, например, я хотел бы получить список всех периодов времени, где идентификаторы равны 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}));
}
но я не думаю, что вы можете сделать это. Если у вас есть какое-либо решение по этому поводу, это будет много значить - даже просто понимание, как
- Если оно вообще не работает - есть ли какая-то причина, почему они решили его не реализовывать?
Было бы лучше в случае использования a для l oop и вызова
await API.graphql (graphqlOperation (getTimePeriod, {id: id})));
или было бы лучше получить весь список и отфильтровать его сам? И лучше я имею в виду эффективность - может быть, это зависит от количества данных, которые будут перечислены в таблице TimePeriod (если много записей получат одну за другой из БД, если небольшое количество записей получит все и отфильтрует их?)