gpt4 book ai didi

node.js - 使用 graphql 发出更新请求

转载 作者:搜寻专家 更新时间:2023-11-01 00:47:32 25 4
gpt4 key购买 nike

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

我正在使用 express 和 express-graphql。我尝试浏览文档但是。我想不通。

schema

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
}
`),

resolver

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/graphql making mutation

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

mutation result

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

最佳答案

错误的论据:

我习惯了 Apollo,因为它的结构很简单。在 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: ...

奖励 ECMA:

我还建议使用解析器方法的 await/async 版本以获得响应而不是 Promise。阅读https://www.greycampus.com/blog/programming/java-script-versions为了使用最新的 ECMAScript 使您的代码更简单

   updatePost: async (parent,args,context,info) => {
try{
console.log(args);
let result= await Post.findByIdAndUpdate(args._id, {$set: {
title: args.postInput.title,
description: args.postInput.description,
content: args.postInput.content,
date: new Date(args.postInput.date)
}})
console.log(result);
return result._doc
}catch (err =>{
throw err;
});
},
ExampleMutation2: ...

关于node.js - 使用 graphql 发出更新请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57551958/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com