Здесь защитник разработчиков FaunaDB.
Я не эксперт по нашему GraphQL (я ткну одного из экспертов, если вы все еще застряли). Когда вы определяете подобные запросы в GraphQL FaunaDB, он будет пытаться сопоставить атрибут (буквы: Letter) с одним из атрибутов в возвращаемом типе (Word).
Поскольку этот возвращаемый тип - Word
type Word {
word: String! @unique
letters: [Letter]!
length: Int!
}
логично, что вы пытаетесь поместить туда Letter. Однако, если я не ошибаюсь, это должно быть точнее, что означало, что это должно быть [Письмо]. Однако, поскольку Letter является типом, вам нужно будет указать идентификатор вместо фактического объекта Letter. Вместо этого вы можете попытаться определить:
WordByLetters(letters: [ ID ] ): Word
, но я, честно говоря, не уверен, можно ли размещать массивы в аргументах. И поскольку вам действительно нужно следующее:
WordByLetters(letters: ID ): Word
, который, если я не ошибаюсь, мы не поддерживаем банкомат. Однако вы можете не определять буквы как встроенные, соединять с правильными буквами (вместо того, чтобы каждый раз вставлять их). Затем вы также должны немного изменить свою схему, чтобы иметь отношение «многие ко многим»:
type Letter {
letter: String! @unique
occurrence: Int!
words: [ Word! ]!
}
Вы можете заранее определить все буквы, чтобы получить легкий доступ к идентификаторам писем. Если вы это сделаете (я не думаю, что это будет работать со встроенным, но я не уверен на 100%), вы можете найти слова по буквам:
type Query {
findLetterByID(id: ID!): Letter
}
, который является запросом, который уже определен by FaunaDB (по крайней мере, если бы Letters не были встроены, я сам почти не работал со встроенными, поэтому я не уверен в некоторых встроенных вещах). Или вы можете определить:
type Query {
findLetter(letter: String!): Letter
}
А затем вы можете получить слова через:
query GetWordsByLetter {
findLetter(_size: 6, letter: "a"){
data {
words {
...
}
}
}
}
Если это не сработает для вас, вы, вероятно, захотите указать преобразователь на запрос, который создаст для вас функцию, определяемую пользователем. Это требует, чтобы вы погрузились в FQL, поскольку UDF указаны в FQL, но это откроет гораздо больше возможностей.
(документы решателя: https://docs.fauna.com/fauna/current/api/graphql/directives/d_resolver)