Реализация нумерации страниц с помощью мангуста и графика-йоги - PullRequest
0 голосов
/ 08 мая 2018

Я экспериментирую с 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'))

1 Ответ

0 голосов
/ 08 мая 2018

Аргументы для поля - это второй параметр, передаваемый распознавателю; первый параметр - это значение, в котором разрешено родительское поле (или значение root в случае запросов / мутаций). Таким образом, ваши резольверы должны выглядеть примерно так:

product: (root, { _id }) => {
  return products.findOne(_id)
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...