Aprenda GraphQL zh 18🤵

Bienvenidos! Este教程续集18个PASOS分布式MERN(Mongo,React,Express,Node)。 Pueden bajarse el codigo e ir leyendo。

Repositorio github con el codigo:https://github.com/kowired/mernstack

🕺PASO1

Crear el archivo package.json。 Desde Visual Studio Code Podemos ejecutar到Terminal con la siguiente linea de codigo

  npm init-是 

🕺PASO2

体温依赖性。 快来看看美国南方部分视觉特刊。 Tambien vamos是安装在paqte上的express-graphql para traabajar con GraphQL和graphql-tools以及许可的痕迹GraphQL。 MonagoDB的ORM para conectarnos和Ademas de Mongoose。

  npm install --save express express-graphql graphql-tools猫鼬 

Tambien vamos安装在desarrollo上的lasdependencias。

  npm install --save-dev babel-cli babel-preset-env babel-preset-stage-0 

🕺PASO3

Debajo de“ scripts” dentro del archivo package.json

  “ name”:“ mern-api”, 
“ version”:“ 1.0.0”,
“ description”:“”,
“ main”:“ index.js”,
“脚本”:{

Voy agregar NODEMON(“自动完成”)

  “ start”:“ nodemon ./index.js --exec babel-node -e js” 

🕺帕索4

存档库index.js可以在存档库server.js中使用。 Esto es solo para habilitar babel

  require('babel-register')({ 
预设:['es2015']
});
require('./ server');

🕺帕索5

Iniciamos el servidor表达。 Creamos un archivo server.js con siguiente codigo:

 从“快递”进口快递; 
  const app = express(); 
  const PORT = 30001; 
  mongoose.Promise = global.Promise; 
  mongoose.connect('mongodb:// localhost / mern_db'); 
  app.get('/',(req,res)=> { 
  res.json({ 
 味精:“ Bienvenido Al MERN教程” 
  }) 
  }); 
  app.listen(PORT,()=> { 
  console.log(`El servidor escucha en el puerto $ {PORT}`); 
  }); 

Ahora瓜达莫斯档案。 哥斯达黎加人民报

🕺PASO6

Inconamos MongoDB des consola con el comando

蒙哥

Tambien se puede utilizar una base de datos mongodb在线:mlab.com

🕺PASO7

Importamos猫鼬是一个原始档案index.js。

 从“猫鼬”进口猫鼬; 

Vamos a conectarnos一个新的本地mongodb基地。 Yo la llame test pero la puedes llamar como quieras。

  mongoose.Promise = global.Promise; 
  mongoose.connect('mongodb:// localhost / mern_db'); 

🕺帕索8

Agregamos GraphQL y模式

 从'express-graphql'导入graphlHTTP; 
 从'./schema'导入模式; 

利用GaphQL进行新的应用

  app.use('/ graphql',graphlHTTP({ 
 模式:模式, 
  graphiql:是 
  })); 

El paquete express-graphql funciona COMO UN中间件。 无需查询中间件图或中间件的突变就可以查询结果。 在HTTP HTTP协议上的所有行为。

🕺帕索9

Creamos el archivo schema.js和Directorio raiz。

Primero importamos los paquetes que vamos一个必要的

 从“ graphql-tools”导入{makeExecutableSchema}; 
 从'./resolvers'导入{resolvers}; 

Luego definimos un type Query和un type Producto

 类型Producto { 
  _id:ID! 
  titulo:弦! 
 应聘者:Int 
  } 
 输入查询{ 
  obtenerProductos:[Producto] 
  } 

结局宣言

  const schema = makeExecutableSchema({ 
  typeDefs, 
 解析器 
  }); 
 导出默认架构; 

🕺帕索10

瓦莫斯一个残酷的解决者 。 Este解析器不会通过许可创建查询或可自定义的突变 。 通过vamar a lalamar resolver.js和estar en la raiz del Directorio

 从'./modelos/producto'导入Producto; 
 出口const解析器= { 
 查询:{ 
 异步obtenerProductos(){ 
 返回等待Producto.find(); 
  } 

Cuando ejecutemos obtenerProductos ()不能通过异步方式传输到Promesa que es el resultado de una ejecucion asyncronica。

🕺帕索11

模特儿。 Lo vamos a lalamar Producto。 前血入口处的多巴哥。 Creamos una nueva carpeta lalamada Modelo和ahi colocamos el archivo Producto.js。

 从“猫鼬”进口猫鼬; 
  const Schema = mongoose.Schema; 
  const ProductoSchema = new Schema({ 
  titulo:{ 
 类型:字符串, 
 必填:true 
  }, 
 候选人:{ 
 类型:数字 
  } 
  }); 
 导出默认的mongoose.model('producto',ProductoSchema); 

🕺帕索12

宜人的应用程序。 Ejecutamos npm start y vamos al siguiente端点http:// localhost:30001 / graphql。 偷偷摸摸地看待通货紧要的东西。 Este es el resultado:

🕺帕索13

Agregamos没有必要更改任何原始档案resolvers.js。 Asi podemos agregar产品在datos mongo的新基地。

 变异:{ 
 异步crearProducto(root,{input}){ 
 返回等待Producto.create(input); 
  }, 

🕺帕索14

Agregamos la mutacion crearProduct一个新的archivo schema.js:

 变异:{ 
 异步crearProducto(root,{input}){ 
 返回等待Producto.create(input); 
  }, 

🕺帕索15

Vamos agregar un producto nuestra base de datos。

🕺帕索16

Agregamos getProduct档案archivo schema.js

  obtenerProducto(_id:ID!):产品 

Tambien en el resolver.js

 异步obtenerProducto(root,{_id}){ 
 返回等待Producto.findById(_id); 
  } 

🕺PASO17

实际生产的Agregamos la funcion产品

  ActualizarProducto(_id:ID !,输入:ProductoIngreso):Producto 

tambien lo agregamos al resolver.js

 异步ActualizarProducto(root,{_id,input}){ 
 返回等待Producto.findOneAndUpdate({_ id},input,{new:true}) 
  } 

Verificamos los resultados con Graphql

🕺PASO18

Agregamos el borrado del producto和schema.js

  borrarProducto(_id:ID!):产品 

Tambien en el resolver.js

 异步borrarProducto(root,{_id}){ 
 返回等待Producto.findOneAndRemove({_ id}); 
  } 

Lo verificamos

✏️结论

在18个对象中,MonQ,Mongo,Express,React,Node缺少GraphQL堆栈。 Pudimos ejecutar lasoperciones CRUD(Crear,Leer,Actualizar,Borrar)。 结束邮编的教程GraphQL是一名邮递员。 Espero que les haya sido de ayuda。

格拉西亚斯!