我正在使用express和apollo-express以及mongodb(猫鼬)来提供博客服务。
我进行了一些突变查询,但是获得突变查询的参数并没有成功。
现在,我要问如何构造我的变异查询,以使事情正常。谢谢。
“消息”:“博客验证失败:标题:路径
title
是必需的。,slug:路径slug
是必需的。”
mutation ($input: BlogInput) {
newBlog(input: $input) {
title
slug
}
}
{
"input": {
"title": "ABC",
"slug": "abc"
}
}
type Blog {
id: ID!
title: String!
slug: String!
description: String
users: [User]!
posts: [Post]!
}
input BlogInput {
title: String!
slug: String!
description: String
}
extend type Mutation {
newBlog(input: BlogInput): Blog
}
import Blog from './blog.model'
export const blogs = async () => {
const data = await Blog.find().exec()
return data
}
export const newBlog = async (_, args) => {
const data = await Blog.create({ title: args.title, slug: args.slug })
return data
}
import mongoose from 'mongoose'
const Schema = mongoose.Schema
const blogSchema = Schema({
title: {
type: String,
required: true
},
slug: {
type: String,
required: true,
unique: true
},
description: {
type: String
},
users: {
type: [Schema.Types.ObjectId],
ref: 'User'
},
posts: {
type: [Schema.Types.ObjectId],
ref: 'Post'
}
})
export default mongoose.model('Blog', blogSchema)
答案 0 :(得分:0)
您已经定义了newBlog
变异以接受名为input
的单个参数。据我所知,您正在使用变量将参数正确传递给突变。您的解析器会收到传递给要解析的字段的参数的映射。这意味着您可以像这样访问input
对象的各个属性:
export const newBlog = async (_, args) => {
const data = await Blog.create({ title: args.input.title, slug: args.input.slug })
return data
}
请注意,您可能希望使input
不可为空(即,将类型设置为BlogInput!
),否则您的解析器将需要处理args.input
返回不确定的可能性。 / p>