我正在尝试使用graphql并使用graphql-yoga创建了一个简单的服务器。我的Mongoose产品模型查询我的数据库,两个解析器都按预期返回数据。到目前为止,它一切正常,我很高兴这是多么容易。但是,我有一个问题。我试图添加一种方法来分析graphQL的结果。
1)向Query类型添加limit参数。
2)通过解析器中的args访问参数
我可以在我的解析器中使用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'))
答案 0 :(得分:1)
字段的参数是传递给解析器的第二个参数;第一个参数是父字段解析为的值(或查询/突变情况下的root
值)。所以你的解析器看起来应该更像这样:
product: (root, { _id }) => {
return products.findOne(_id)
}