GraphQL
GraphQL是什么
GraphQL的使用
使用GraphQL前的准备工作
1.GraphQL初识
- 认识GraphQL
- 使用GraphQL
1.认识 GraphQL
介绍: GraphQL 是一种用于 API 的查询语言。它允许客户端在请求中指定所需的数据,而不是服务器端提供的所有数据
特点: 具有很强的灵活性,客户端可以在单个请求中获取所需的所有数据,而不需要多次请求。它还具有强大的查询能力,可以通过一个请求获取多个资源和关系。还有一个好处是它是可扩展的,新字段和类型可以在不破坏现有客户端的情况下添加。
GraphQL 的语法包括查询语句和操作语句。查询语句用于获取数据,而操作语句用于修改数据。GraphQL 与 RESTful API 相比,有更大的灵活性和更好的性能,
2.使用 GraphQL
- 这里我们从一个简单的
hello world
开始
js
// 1. 导入依赖
const express = require("express")
const {buildSchema} = require("graphql")
const { graphqlHTTP } = require('express-graphql');
// 2.构建schema, 这里定义查询的语句和类型
var Scchema = buildSchema(`
type Query{
hello: String,
getName: String,
getAge :Int,
getTian:String,
}
`)
// 3.定义查询所对应的reslover,也就是查询对应的处理器
const root = {
hello:()=>{
//通过数据库查
var str = "hello wolrd1111"
return str;
},
getName:()=>{
return "kerwin"
},
getAge:()=>{
return 100
},
getTian:()=>{
var str = 'hi, I`m xiao tian ,the best Programmer in the world'
return str;
}
}
// 4.使用express创建一个服务器实例
var app = express()
// 5.在应用中添加中间件并处理路由
app.use("/home",function(req,res){
res.send("home data2222")
})
app.use("/list",function(req,res){
res.send("list data")
})
app.use("/graphql",graphqlHTTP({
schema:Scchema,
rootValue:root,
graphiql:true
}))
// 6.监听自定义端口
app.listen(3022,()=>{
console.log('Server started on port 3022');
})
2.GraphQL的使用
- 定义模式: 在服务器端定义数据类型和字段
- 发送查询: 在客户端发送一个查询请求,请求所需的数据
- 返回数据: 服务器端返回查询结果
GraphQL 支持变更数据,包括 添加、更新、删除
定义模式
js
type Query {
book(id: ID): Book
}
type Book {
id: ID
title: String
author: String
}
发送查询
js
query {
book(id: 1) {
title
author
}
}
返回数据
js
{
"data": {
"book": {
"title": "Harry Potter and the Philosopher's Stone",
"author": "J.K. Rowling"
}
}
}
3.使用GraphQL前的准备工作
温馨提醒
使用前,需具备node、npm 、express基础,
node环境搭建及其npm/yarn安装等在这不做过多说明
初始化环境
首先新建空的文件夹
初始化环境
npm init -y
安装依赖
这里由于是在express中使用,首先需要安装如下依赖
js
// 安装express
npm i express
// 安装express-graphql
npm i express-graphql
// 安装graphql
npm i graphql
// 安装 自动重新启动服务器
npm i nodemon
// 安装Mongoose数据库模块
npm i mongoose
关于mongoose简介
INFO
Mongoose 是一个 Node.js 的 MongoDB 数据库模块。它提供了一个简单的 API 来操作 MongoDB 数据库。它还提供了一些验证、默认值、中间件等功能来帮助你管理数据。
1.基本使用流程
- 安装依赖
js
npm install mongoose
- 在node文件中引入mongoose模块并连接到MongoDB数据库
js
const mongoose = require('mongoose');
mongoose.connect('mongodb://localhost/test', {useNewUrlParser: true});
- 连接成功之后,就可以创建模型并操作数据库了。
js
创建模型
const Cat = mongoose.model('Cat', { name: String });
保存数据
const kitty = new Cat({ name: 'Zildjian' });
kitty.save().then(() => console.log('meow'));
查询数据
Cat.find({ name: /^Fluff/ }, function (err, cats) {
console.log(cats);
});
Mongoose用法
关于mongoose的基本方法包括连接数据库、创建模型、插入文档、查询文档、删除文档等。
- 连接数据库
js
const mongoose = require('mongoose');
mongoose.connect('mongodb://localhost/mydb', {useNewUrlParser: true});
- 创建模型
js
const userSchema = new mongoose.Schema({
name: String,
age: Number
});
const User = mongoose.model('User', userSchema);
- 插入文档
js
const newUser = new User({ name: 'John', age: 25 });
newUser.save((error) => {
if (error) {
console.log(error);
} else {
console.log('User saved.');
}
});
- 查询文档
js
User.find({ name: 'John' }, (error, users) => {
if (error) {
console.log(error);
} else {
console.log(users);
}
});
- 更新文档
js
User.findOneAndUpdate({ name: 'John' }, { age: 30 }, (error) => {
if (error) {
console.log(error);
} else {
console.log('User updated.');
}
});
- 删除文档
js
User.findOneAndRemove({ name: 'John' }, (error) => {
if (error) {
console.log(error);
} else {
console.log('User deleted.');
}
});
这些是 Mongoose 的基本用法,它还有很多其它功能,例如验证、默认值、中间件等,更多参考mongoose官网~