Install
npm init --y
npm install apollo-server-express express graphql mongoose
npm install
安装完成后,完善目录结构如下👇
├── graphql
│ ├── resolver.js
│ └── schema.js
├── models
│ └── product.js
├── mode-modules
├── app.js
├── package-lock.json
└── package.json
各模块完善
/graphql/schema.js
const {
gql
} = require('apollo-server-express');
module.exports = gql `
type Product{
_id:Int,
name:String,
active:Boolean
}
type Query {
getProduct: [Product]
}
type Mutation{
createProduct(input:ProductInput):Product
}
input ProductInput{
_id: Int,
name:String,
active:Boolean
}
`
/graphql/resolver.js
var mongoose = require('mongoose');
//引入models
var Product = require('../models/product')
//连接数据库
mongoose.connect('mongodb://127.0.0.1:27018/test', {
useNewUrlParser: true
})
mongoose.connection.on('connected', function () {
console.log('连接成功');
})
mongoose.connection.on('error', function () {
console.log('出错了');
})
mongoose.connection.on('disconnected', function () {
console.log('连接断开');
})
var root = {
Query: {
getProduct() {
return Product.find({})
},
},
Mutation: {
createProduct(_, {
input
}) {
var newList = {
_id: input._id,
name: input.name,
active: input.active
}
new Product(newList).save()
return newList
},
}
}
module.exports = root;
/models/product.js
var mongoose = require('mongoose');
var Schema = mongoose.Schema;
var ProductSchema = mongoose.Schema({
"_id": Number,
"name": String,
"active": Boolean
})
module.exports = mongoose.model("Product", ProductSchema)
app.js
var {ApolloServer} = require('apollo-server-express');
const typeDefs = require('./graphql/schema');
const resolvers = require('./graphql/resolver');
const express = require('express')
const app = express();
const server = new ApolloServer({
typeDefs,
resolvers,
playground:{
endpoint:`/graphql`,
settings:{
"editor.theme":"light"
}
}
});
const port = 9000;
server.applyMiddleware({app});
app.listen({port}, () =>
console.log(`Server ready at http://localhost:${port}`)
);
然后直接运行
node app.js
