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

在变异中使用GraphQL Args属性

澹台奇略
2023-03-14

我正在使用express和apollo-express以及mongodb(猫鼬)制作一个博客服务。

“消息”:“blog验证失败:需要title:Pathtitle,需要slug:Pathslug。”

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)

共有1个答案

喻高寒
2023-03-14

您已经定义了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返回undefined的可能性。

 类似资料:
  • 问题内容: 我想这样做: 注意这一行: 我试图设置这样的值: 但我看不到任何效果。 在调用方法之前是否已配置log4j ? 还有其他方法吗? 问题答案: 看来您做对了所有事情。我认为在主类中设置属性与通过命令行指定属性之间没有任何区别,只要它发生在实际的log4j初始化之前即可。 我认为您的问题是 在 指定属性 之前已 加载日志记录框架。我可以说在调用配置器时将配置日志记录框架(log4j)。这样

  • 我正在使用log4j管理Clojure应用程序中的日志记录。我希望能够使用系统变量为log4j中的单个包设置日志级别。属性文件。例如,下面是我的基本属性文件: 这将日志级别设置为中的DEBUG(特定日志代码所在的位置)。然而,我不希望这样——我希望它在本地是调试的,在生产上是信息的。所以,我使用一个环境变量: 这个实例中的设置为,我可以通过使用环境变量将日志级别设置为DEBUG来确认它是否可以正常

  • 嗨,我试图在会话中遍历对象列表,再次使用JSTL遍历会话中的每个对象。下面是jsp代码 下面是node类 在循环这些项时,我遇到以下异常 为什么它找不到nodes属性?

  • 我有一个Vuex实例,其中包含两个变量: 我有我的主Vue实例,其中日期属性是从继承的: 我最初称之为不带任何额外参数,但是一旦和的值更改,我想调用上面的之类的函数。但是,当我更改和的值时,没有任何变化。 可能值得注意的是,当我使用Vue插件在Chrome中进行检查,并单击根组件时,视图中会突然显示更改?很奇怪

  • 我在编程方面是新手,尤其是在科特林,如果我的问题太基础了,我很抱歉

  • 问题内容: 我有几个字段,每个字段都是这样的: 通过使用带有计数器的循环,我希望能够说出fieldx。其中x是该循环中计数器的值。这意味着如果我的数组中有6个条目,则将为fields1-field6提供值。 是否可以使用fieldx? 问题答案: 您可以使用反射来完成此操作,但是通常最好在数组中声明字段。代替: 你可以这样做: 然后,您可以遍历数组来设置值: