我尝试创建一个简单的 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();