graphql-4

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

http://localhost:9000/graphql

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值