Я экспериментирую с graphql и создал простой сервер, использующий graphql-yoga. Моя модель продукта Mongoose запрашивает мою базу данных, и оба средства разрешения возвращают данные, как и ожидалось. Пока все это работает, и я очень доволен тем, как легко это было. Однако у меня есть одна проблема. Я пытаюсь добавить способ разбить результаты в графе.
Что я пробовал?
1) Добавление параметра ограничения к типу запроса.
2) Доступ к параметру через аргументы в резольвере
Ожидаемое поведение
Я могу использовать параметр args.limit в своем преобразователе и использовать его для изменения функции Mongoose
Фактическое поведение
Я не могу прочитать объект arg.
Полный код ниже. Как мне достичь этой цели?
import { GraphQLServer } from 'graphql-yoga'
import mongoose from "mongoose"
import {products} from "./models/products.js"
const connection = mongoose.connect('mongodb://myDB')
const prepare = (o) => {
o._id = o._id.toString()
return o
}
const typeDefs = `
type Product {
_id: String
name: String
description: String
main_image: String
images: [String]
}
type Query {
product(_id: String): Product
products(limit: Int): [Product]
}
`
const resolvers = {
Query: {
product: async (_id) => {
return (await products.findOne(_id))
},
products: async (args) => {
console.log(args.name)
return (await products.find({}).limit(args.limit))
},
},
}
const server = new GraphQLServer({
typeDefs,
resolvers
})
server.start(() => console.log('Server is running on localhost:4000'))