#graphql #primary-key #faunadb
#graphql #primary-key #faunadb
Вопрос:
Это можно сделать с помощью FQL, но я не могу найти ни одного примера мутации GraphQL, которая создает новый документ в FaunaDB, где _id определяется приложением, а не самим FaunaDB.
Конечно, я могу добавить свой идентификатор, созданный приложением (например, uuidv4), в качестве дополнительного атрибута в документе и создать для него индекс, но это кажется неправильным, учитывая, что документ в любом случае будет иметь другой первичный ключ.
Ответ №1:
Вы можете использовать директиву resolver, связать с определяемой пользователем функцией (UDF), чтобы принять _id
в качестве параметра, а затем использовать Create
.
Вот пример,
Файл схемы
type Order {
customerName: String!
price: Float!
}
input OrderInput {
orderID: Int!
customerName: String!
price: Float!
}
type Query {
CreateOrder(data: OrderInput!): Order! @resolver
}
UDF (CreateOrder)
Update(
Function("CreateOrder"),
{
body: Query(Lambda(["orderdata"],
Create(Ref(Collection("Order"), Select(["orderID"],Var("orderdata"))),
{
data: {
customerName: Select(["customerName"], Var("orderdata")),
price: Select(["price"], Var("orderdata"))
}
}
)))})
Комментарии:
1. Спасибо за быстрый ответ, Джей. В сценарии, когда заказ имеет фактическую связь с клиентом, я думаю, мне пришлось бы вручную включить определение ввода OrderCustomerRelation в мою схему, верно? Это все? Моя проблема связана с метафорой просьбы о банане, но в конечном итоге приходится привлекать гориллу и все джунгли.