我正在尝试使用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'))
1 回答
字段的参数是传递给解析器的第二个参数;第一个参数是父字段解析为的值(或者在查询/突变的情况下为
root
值) . 所以你的解析器看起来应该更像这样: