Skip to content
on this page

扫码联系

编程学习&& IT

tian

GraphQL

GraphQL是什么

GraphQL的使用

使用GraphQL前的准备工作

1.GraphQL初识

  • 认识GraphQL
  • 使用GraphQL

1.认识 GraphQL

官网:https://graphql.cn/

介绍: GraphQL 是一种用于 API 的查询语言。它允许客户端在请求中指定所需的数据,而不是服务器端提供的所有数据

特点: 具有很强的灵活性,客户端可以在单个请求中获取所需的所有数据,而不需要多次请求。它还具有强大的查询能力,可以通过一个请求获取多个资源和关系。还有一个好处是它是可扩展的,新字段和类型可以在不破坏现有客户端的情况下添加。

GraphQL 的语法包括查询语句和操作语句。查询语句用于获取数据,而操作语句用于修改数据。GraphQL 与 RESTful API 相比,有更大的灵活性和更好的性能,

2.使用 GraphQL

  1. 这里我们从一个简单的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的使用

    1. 定义模式: 在服务器端定义数据类型和字段
    1. 发送查询: 在客户端发送一个查询请求,请求所需的数据
    1. 返回数据: 服务器端返回查询结果

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安装等在这不做过多说明

初始化环境

  1. 首先新建空的文件夹

  2. 初始化环境 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.基本使用流程
  1. 安装依赖
js
npm install mongoose
  1. 在node文件中引入mongoose模块并连接到MongoDB数据库
js
const mongoose = require('mongoose');
mongoose.connect('mongodb://localhost/test', {useNewUrlParser: true});
  1. 连接成功之后,就可以创建模型并操作数据库了。
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的基本方法包括连接数据库、创建模型、插入文档、查询文档、删除文档等。

  1. 连接数据库
js
const mongoose = require('mongoose');
mongoose.connect('mongodb://localhost/mydb', {useNewUrlParser: true});
  1. 创建模型
js
const userSchema = new mongoose.Schema({
    name: String,
    age: Number
});
const User = mongoose.model('User', userSchema);
  1. 插入文档
js
const newUser = new User({ name: 'John', age: 25 });
newUser.save((error) => {
    if (error) {
        console.log(error);
    } else {
        console.log('User saved.');
    }
});
  1. 查询文档
js
User.find({ name: 'John' }, (error, users) => {
    if (error) {
        console.log(error);
    } else {
        console.log(users);
    }
});
  1. 更新文档
js
User.findOneAndUpdate({ name: 'John' }, { age: 30 }, (error) => {
    if (error) {
        console.log(error);
    } else {
        console.log('User updated.');
    }
});
  1. 删除文档
js
User.findOneAndRemove({ name: 'John' }, (error) => {
    if (error) {
        console.log(error);
    } else {
        console.log('User deleted.');
    }
});

这些是 Mongoose 的基本用法,它还有很多其它功能,例如验证、默认值、中间件等,更多参考mongoose官网~