express - 没有从突变中获取从 server.js 文件中的邮递员发送的数据
问题描述
我正在使用 graphql、prisma 和 express 来测试简单的查询和变异,但是当我从邮递员发送数据时,我没有收到邮递员发送的数据,我将这个变异发送到 graphql 但在 server.js 文件中
mutation{
createUser(user_name:"test"){
user_name
}
}
,我越来越不确定,在 REST API 中,您可以使用 body parser 为 json 修复此问题,是否有类似的方法来处理带有 prisma 和 express 的 graphql 的查询和突变
const { PrismaClient } = require('@prisma/client');
const express = require('express');
const { graphqlHTTP } = require('express-graphql');
const { makeExecutableSchema } = require('@graphql-tools/schema');
const prisma = new PrismaClient();
const typeDefs = `
type User {
user_name: String
}
type Query {
allUsers: [User!]!
}
type Mutation {
createUser(user_name:String):User
}
`;
const resolvers = {
Query: {
allUsers: () => {
console.log(prisma)
return prisma.user.findMany();
}
},
Mutation:{
createUser:async(user_name)=>{
console.log(user_name)
user={
"user_name":user_name
}
const test= await prisma.user.create({ data: user })
return test
}
}
};
const schema = makeExecutableSchema({
resolvers,
typeDefs,
});
const app = express();
app.use('/graphql', graphqlHTTP({
schema,
}));
app.listen(5000);
解决方案
GraphQl 查询/变异的参数通过args
解析器的第二个参数(通常定义为 )传递。Mutation
像这样更新你的
Mutation: {
createUser: async (parent, args, context) => {
console.log(args.user_name);
user = {
user_name: args.user_name,
};
const test = await prisma.user.create({ data: user });
return test;
},
},
在此修改后,我能够按原样运行您的代码。
我建议查看 express-graphql 的文档或一些示例代码,以更熟悉该库的工作原理。这个例子是开始如何使用 express、graphql 和 prisma 的好地方。它在打字稿中,但与您需要的非常相似。
推荐阅读
- c# - 如何为每个工作簿创建一个 WorkbookOpen 事件?
- applescript - 在两个字符串 AppleScript 方法之间提取文本的错误
- arm - 如何在 ARMv8 中使用 BMI 函数
- ruby-on-rails - Capistrano 和 Bitbucket 托管 gem 的问题
- sql - 如何在数据库中保留重复链,使用 2 列进行搜索,但使用具有相同 ID 的链记录
- android - 如何将来自 firebase 的数据设置为 Android recyclerView 和 cardView holder setup?
- c# - 如何从多个服务器/数据库中找到相等、修改和唯一的 SQL 对象?
- javascript - 如何按特定顺序动态加载多个脚本?
- javascript - 如何通过 ID 简洁地分布对象数组?
- c++ - 在模板关键字之后的行上未解析符号“T”