当前位置: 首页 > 知识库问答 >
问题:

使用Mongoose和graphql实现分页

陈兴朝
2023-03-14

我正在试验graphql,并使用graphql瑜伽创建了一个简单的服务器。我的Mongoose产品模型查询我的数据库,两个解析器按预期返回数据。到目前为止,一切顺利,我很高兴这是多么容易。然而,我有一个问题。我正在尝试添加一种方法来对来自graphQL的结果进行分页。

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个答案

危飞文
2023-03-14

字段的参数是传递给解析器的第二个参数;第一个参数是父字段解析到的值(或者查询/突变情况下的root值)。所以你的解析器应该看起来更像这样:

product: (root, { _id }) => {
  return products.findOne(_id)
}
 类似资料:
  • 是否可以同时利用GraphQL和Mongoose? 到目前为止,我已经能够集成GraphQL和Mongoose来处理填充数据库,但是我很难理解这如何工作来检索数据,特别是具有嵌套引用的数据。 考虑这个模式: Bar模式本质上是相同的,只有一个“名称”字段。 是否可以运行GraphQL查询,用“bar”中的引用填充数据? 目前,我们正在使用GraphQL工具创建TypeDef、突变和查询,如下所示:

  • 问题内容: 目前,在graphql-java库中看不到分页的现有支持。它确实具有一些基本的中继支持,在其中,我们可以创建Facebook推荐的实现分页的方式。 这是有助于实现该目标的方法。但是,由于没有文档,因此很难理解此功能的工作原理。可有人击穿的步骤,他们将采取添加分页支持,如果他们已经有一个现成的模式,它允许像基本的查询,,等使用graphql- Java库? 问题答案: 您甚至不需要中继连

  • GraphQL Mongoose Cursor Pagination with Elasticsearch Support Adds support for Relay-like cursor pagination with Mongoose models/documents. This library also provides type-ahead (autocomplete) functio

  • GraphQL Mongoose Loader Install npm i @entria/graphql-mongoose-loader --saveyarn add @entria/graphql-mongoose-loader Mongoose Dataloader Batch Add batch to your GraphQL resolvers/loaders Define a mong

  • graphql-compose-mongoose This is a plugin for graphql-compose, which derives GraphQLType from your mongoose model. Also derives bunch of internal GraphQL Types. Provide all CRUD resolvers, including g

  • Koa 2 + Passport + Mongoose + GraphQL Notice You want build a more flexible GraphQL schema, consider using this boilerplate instead: https://github.com/sibelius/graphql-dataloader-boilerplate graffiti