У меня есть тип graphql с подключением «один ко многим» к другому типу. Я хочу отфильтровать многие, используя один. Таким образом, Amplify сгенерировал схему graphql, но во входных данных для запроса списка нет значения для используемого подключения.
Тип:
type Event @model @auth(rules: [{ allow: owner }]) {
id: ID!
name: String!
date: AWSDateTime!
user: User! @connection(name: "EventsUser", sortField: "date")
isDeleted: Boolean!
}
Запрос:
type Query {
listEvents(filter: ModelEventFilterInput, limit: Int, nextToken: String): modelEventConnection
Ввод запроса списка
input ModelEventFilterInput {
id: ModelIDFilterInput
name: ModelStringFilterInput
date: ModelStringFilterInput
isDeleted: ModelBooleanFilterInput
and: [ModelEventFilterInput]
or: [ModelEventFilterInput]
not: ModelEventFilterInput
}
Я попытался передать идентификатор в объекте переменных, используя:
variables: {
filter: {
eventUserId: {
eq: props.id,
},
, где eventUserId - имя поля, сгенерированное при помощи ampify ииспользуется в таблице DynamoDB, но это не сработало. Как вы фильтруете на основе этого значения? Нужно ли писать это вручную?
Адам
Редактировать
У меня есть кое-что из этого выяснено. Я добавил:
eventUserId: ModelEventUserInput
, где ModelEventUserInput равен
input ModelEventUserInput {
eq: ID
}
к входу ModelEventFilterInput, а затем я использую:
variables: {
filter: {
eventUserId: {
eq: props.id,
},
Это работает для фильтрации правильныхСобытия, когда приложение загружается фильтрацией, не применяются к подпискам. Я попытался просто добавить объект фильтра в конструктор подписки:
this.props.subscribeToEvents(
buildSubscription({
query: gql(onCreateEvent),
variables: {
owner,
filter: {
eventUserId: {
eq: id,
},
isDeleted: {
eq: false,
},
}
},
}, gql(listEvents))
);
, но безуспешно. Как можно добиться этой фильтрации по подписке?
Адам