无法为不可为空的字段 Mutation 返回 null

时间:2021-07-23 13:06:54

标签: node.js mongodb express mongoose graphql

我尝试创建一个简单的 graphql 服务器来在 mongodb 数据库中创建文档。但是这个服务器总是说“不能为不可为空的字段 Mutation.createCat 返回空值”。当我在 graphiql 中传递这个突变时

突变{ createCat(名称:“测试”){ ID } }

所以我无法弄清楚错误。请帮忙。谢谢!

resolvers.js

const Cat = require("../models/cat")
const resolvers = {
Query: {
    hello: () => "hi"
},
Mutation: {
    createCat: async (_, { name }) => { 
        const kitty = new Cat({ name }) 
        await kitty.save()
        return kitty
    }
 }
}
module.exports =  { resolvers }

schema.js

 const { buildSchema } = require('graphql');
 module.exports = buildSchema(` 
 type Query {
     hello: String!
 }

 type Cat {
   id: ID!
  name: String!
 }

  type Mutation {
     createCat(name: String!): Cat!
  }`
  )

cat.js

  const mongoose = require('mongoose')
  const Schema = mongoose.Schema;
  const catSchema = new Schema({
  name: {
    type: String,
  },
  })

  module.exports = mongoose.model('Cat', catSchema)

server.js

const express = require('express');
const { graphqlHTTP } = require('express-graphql'); 
const mongoose  = require('mongoose');
const graphQlResolvers = require('./graphql/resolvers')
const graphQlSchema = require('./graphql/schema')

const port = 4000 


const app = express(); 
app.use(express.json());
app.use(express.urlencoded({ extended: true }));


const startServer = async () => {
 await 


 mongoose.connect(
`mongodb+srv://*****:*******@indiacluster.yqswz.mongodb.net/event_booking `,
   { useNewUrlParser: true, useUnifiedTopology: true }
).then(() => {
  console.log('Database connected ')
 }).catch((err) => {
   console.log("Error occured while connecting to the database " + err)
})


 app.use('/graphql', graphqlHTTP({
  schema: graphQlSchema,
  rootValue: graphQlResolvers,
  graphiql: true
 }));
 }
 app.listen(port, () => {
 console.log(`Running a GraphQL API server at http://localhost:${port}/graphql`);
 });



   startServer();

0 个答案:

没有答案