мои извинения за задержку, я не был точно уверен, что это за недостающая информация, поэтому я прокомментировал первым :).
Схема
Пример части схемы, имеющей аргументы:
type Mutation {
register(email: String!, password: String!): Account! @resolver
login(email: String!, password: String!): String! @resolver
}
Когда такая схема импортируется в FaunaDB, будут предоставлены функции-заполнители.
Параметры UDF
Как вы можете видеть, все, что делает функция, это Abort с сообщением, что функция все еще должна быть реализованы. Реализация начинается с лямбды, которая принимает аргументы, и эти аргументы должны соответствовать тому, что вы определили в распознавателе.
Query(Lambda(['email', 'password'],
... function body ...
))
Использование аргументов осуществляется с помощью Var, что в данном случае означает Var («электронная почта») или Var («пароль»). Например, в моем конкретном случае c мы будем использовать сообщение, которое было передано для получения учетной записи по электронной почте, и пароль для передачи функции Login , которая возвращает секрет (причина Я выбираю здесь то, что возвращаемое значение для распознавателя GraphQL должно быть действительным результатом GraphQL (например, обычный JSON
Query(Lambda(['email', 'password'],
Select(
['secret'],
Login(Match(Index('accountsByEmail'), Var('email')), {
password: Var('password')
})
)
))
Вызов преобразователя UDF через GraphQL
Наконец, как передать параметры при вызове? Это должно быть ясно из площадки GraphQL, так как она предоставит вам документы и автозаполнение. Например, это то, что автоматически сгенерированные документы GraphQL сообщают мне после импорта моей схемы:
Это означает, что мы можем назвать его следующим образом:
mutation CallLogin {
login (
email: "<some email>"
password: "<some pword>"
)
}