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

使用图ql发出更新请求

赵俊远
2023-03-14

我正在尝试使用 graphql 制作 crud 应用程序。但我不确定更新请求。我试过了,但它不起作用。在这里看我的代码。创建帖子和查询帖子工作正常。

我用的是express和express-graphql。我试着查阅文件但是。我无法理解。

(计划或理论的)纲要

const graphqlHttp = require('express-graphql');
const {buildSchema} = require('graphql');

app.use('/graphql', graphqlHttp({
schema: buildSchema(`
        type Post {
            _id: ID!
            title: String!
            description: String!
            content: String!
            date: String!
        }
        input PostInput {
            title: String!
            description: String!
            content: String!
            date: String!
        }
        type RootMutation {
            createPost(postInput: PostInput!): Post
            updatePost(_id: ID!, postInput: PostInput!): Post

        }
        schema{
            query: RootQuery
            mutation: RootMutation
        }       
    `),

分解器

updatePost: args => {   
            console.log(args); <!-- this log gives nothing 
            Post.findByIdAndUpdate(args._id, {$set: {
                title: args.postInput.title,
                description: args.postInput.description,
                content: args.postInput.content,
                date: new Date(args.postInput.date)
            }})
                .then(result => {
                    console.log(result);
                    return {
                        ...result._doc
                    }        
                }).catch (err =>{
                    throw err;
            });
        },

localhost:8080/grapql产生突变

mutation {
  updatePost(_id: "5d5a3f380930813c647cb697", postInput: {title: "update title", description: "update", content: "update content", date: "2019-08-19T06:18:06.778Z"}) {
    title
  }
}

突变结果

{
  "data": {
    "updatePost": null
  }
}

共有2个答案

阎修杰
2023-03-14

我知道我迟到了,你可能修好了它,但它可能会帮助别人。

type RootMutation {
            updatePost(_id: ID!, postInput: PostInput!): Post

相反,写:

updatePost(id: ID!, postInput: PostInput!): Post!
吴安和
2023-03-14

错误的论点:

我习惯了阿波罗,因为它的结构简单。在Apollo中,我遇到了类似的问题,而解析器中的查询和突变的参数由4个不同的项组成。

updatePost: (parent,args,context,info) => {   // <-- look at this line
            console.log(args);
            Post.findByIdAndUpdate(args._id, {$set: {
                title: args.postInput.title,
                description: args.postInput.description,
                content: args.postInput.content,
                date: new Date(args.postInput.date)
            }}).then(result => {
                    console.log(result);
                    return {
                        ...result._doc
                    }        
                }).catch (err =>{
                    throw err;
            });
        },
ExampleMutation2: ...
 类似资料:
  • 我正在使用库将现有的 Rest API 项目迁移到图形QL。我有一段代码,用于从获取当前的 : 但是,这将为图形 QL 返回空值。我认为这是正确的,因为对于 GraphQL,我们必须使用

  • 我真的很惊讶,因为看起来太低级了,失去了http代理的简单性,发出http请求似乎应该放在核心库集中(我意识到这是非常主观的)。 删除HTTP代理的理由是什么?它不符合Clojure的核心哲学吗?对于用于基本HTTP请求的最佳库有什么建议?

  • 下面有一个graphl api查询,我用它来发送来自react front应用程序的数据和对象,以获得所需的结果 然后我试着从react中传递变量,如下所示 我已经附上了我需要发送到下面的graphql api的图像

  • 问题内容: 我一直在尝试AngularJS进行实验项目,但我遇到了这个问题。在我的html中,我想显示项目列表 Index.html 最初,我只是使用一个简单的控制器来获取信息并使用以下命令更新视图: controllers.js(原始) 这工作得很好,我可以获得项目清单。同时,通过更改我的结构以使用工厂发出相同的请求并将其绑定到$ scope.items,该命令将不起作用。我尝试了许多$ wat

  • 问题内容: 我读了一些将jsons发布到服务器的示例。 有人说: OkHttp是Java提供的HttpUrlConnection接口的实现。它提供用于编写​​内容的输入流,并且不知道(或不在乎)内容的格式。 现在,我想用名称和密码的参数对URL进行常规发布。 这意味着我需要自己将名称和值对编码为流? 问题答案: 当前接受的答案已过期。现在,如果您想创建一个发布请求并向其中添加参数,则应该使用Mul

  • 问题内容: 我有以下JSON响应 我为GSON请求创建了以下类。如何发出GSON请求并使用截击请求存储响应的值。GSON请求应该是什么样的? 问题答案: 只需按以下步骤创建一个类(取自Android Developer Docs ) 现在,在您的类文件(活动)中,只需按如下所示调用此类: 我们还需要创建两种方法- -收到来自的回复 -处理任何错误 如下: 和 我希望这会有意义。