首页 > 解决方案 > 没有从突变中获取从 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);

标签: expressgraphqlpostmangraphql-jsprisma

解决方案


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 的好地方。它在打字稿中,但与您需要的非常相似。


推荐阅读