Итак, у меня есть проект rails, который функционирует как сервер для предоставления API GraphQL. Моя ситуация такова, что у меня есть связь между заказами и продуктами. как в заказе есть несколько товаров, так и товары могут быть в разных заказах, поэтому я настроил их с has_many
и и belongs_to
друг другу в их моделях. У меня также есть стол соединения, и он, кажется, работает должным образом на стороне рельсов.
Моя проблема в том, что когда я хочу добавить или прочитать это graphQL, я хочу делать запросы примерно так:
mutation {
createOrder(
organizationId: 1
userId: 2
paymentType: "Cash"
products: [
{id: 1}, {id: 2}
]
) {
order {
id
createdAt
}
errors
}
}
, но что-то определенно не так. my CreateOrder
выглядит так:
class Mutations::CreateOrder < Mutations::BaseMutation
argument :organization_id, Integer, required: true
argument :user_id, Integer, required: true
argument :paid, Integer, required: false
argument :payment_type, String, required: true
argument :status, String, required: false
argument :products, [Types::ProductInputType], required: true
field :order, Types::OrderType, null: false
field :errors, [String], null: true
def resolve(**attributes)
order = Order.new(attributes)
if order.save
{
order: order,
errors: []
}
else
{
order: nil,
errors: order.errors.full_messages
}
end
end
end
Сначала я пытался указать :products
как ProductType
в моей мутации CreateOrder
, но решил, что вместо этого мне нужен тип ввода, который я сделанный так:
module Types
class ProductInputType < Types::BaseInputObject
argument :id, Integer, required: true
argument :name, String, required: false
argument :organization_id, Integer, required: false
argument :description, String, required: false
argument :inventory, Integer, required: false
argument :images, String, required: false
argument :price, Float, required: false
# type Types::ProductType
end
end
На данный момент я весь день с этой проблемой сижу и у меня остроумие, документация, которую я считаю недостаточной, старая или, по крайней мере, я не Я не понимаю это полностью. Поэтому я не уверен, правильно ли я задаю вопрос.
Надеюсь, кто-нибудь придет и поможет :)
С наилучшими пожеланиями