美文网首页
GraphQL入门之查询操作

GraphQL入门之查询操作

作者: kongxx | 来源:发表于2024-03-17 10:52 被阅读0次

接前面几篇文章,GraphQL 支持的数据操作有:

  • 查询(Query): 获取数据的基本查询。
  • 变更(Mutation): 对数据的增删改等操作。
  • 订阅(Subscription): 用于监听数据变动并协议推送变动的消息。

今天先看一下怎么执行一个简单的 Query 操作。

创建 Node.js 的工程

mkdir myapp
cd myapp
npm init (一路回车)

安装依赖包

npm install @apollo/server graphql

定义 Schema

创建 schema.graphql 文件,内容如下:

type User {
    id: ID!
    name: String!
    email: String!
}

type Query {
    users: [User],
    user(id: ID!): User,
}

schema 文件主要包括:

  1. 定义模型对象:定义了一个User对象,包括 id, name 和 email 属性。
  2. 定义查询操作:定义了两个查询操作,users查询所有用户,user(id)根据id查询用户。

实现处理器

创建 resolvers.js 文件,内容如下:

const user1 = {id: 1, name: 'user1', email: 'user1@gmail.com'};
const user2 = {id: 2, name: 'user2', email: 'user2@gmail.com'};
const user3 = {id: 3, name: 'user3', email: 'user3@gmail.com'};
const users = [user1, user2, user3];

const resolvers = {
  Query: {
    users: () => users,

    user(obj, args, context, info) {
      for (let user of users) {
        if (user.id == args.id) {
          return user;
        }
      }
      return null;
    },
  },
};

module.exports = resolvers;

处理器文件主要包括

  1. 准备测试数据:这里创建了一个 User 对象的数据组并初始化了几条数据。
  2. 定义处理函数:
    users:返回上面初时的 User 数组。
    user(obj, args, context, info):根据传入的 id 在 User 数组中查找,并返回查询结果。

主程序

创建 server.js 文件,内容如下:

const { ApolloServer } =  require('@apollo/server');
const { startStandaloneServer } = require('@apollo/server/standalone');
const fs = require("fs");

const typeDefs = fs.readFileSync('./schema.graphql').toString();
const resolvers = require('./resolvers');

const server = new ApolloServer({
  typeDefs,
  resolvers,
});

startStandaloneServer(server).then(function(data) {
  console.log(`🚀 Server ready at ${data.url}`);
});

测试

启动服务

node server.js

服务启动后,访问 http://localhost:4000 进行测试。

列表操作

查询操作

query GetUsers {
  users {
    id,
    name,
    email
  }
}

查询结果

{
  "data": {
    "users": [
      {
        "id": "1",
        "name": "user1",
        "email": "user1@gmail.com"
      },
      {
        "id": "2",
        "name": "user2",
        "email": "user2@gmail.com"
      },
      {
        "id": "3",
        "name": "user3",
        "email": "user3@gmail.com"
      }
    ]
  }
}

查找操作

查询操纵

query FindUser {
  user(id: 1) {
    id,
    name,
    email
  }
}

查询结果

{
  "data": {
    "user": {
      "id": "1",
      "name": "user1",
      "email": "user1@gmail.com"
    }
  }
}

相关文章

  • Graphql入门

    Graphql入门 GraphQL是一个查询语言,由Facebook开发,用于替换RESTful API。服务端可...

  • Dgraph-查询语言

    查询语言 Dgraph的GraphQL+-是一种基于facebook的GraphQL的图查询语言。GraphQL并...

  • Graphql Go 基于Golang实践

    GraphQL GraphQL 既是一种用于 API 的查询语言也是一个满足你数据查询的运行时。 GraphQL ...

  • GraphQL学习-Schema 和类型

    类型系统(Type System) 如果你之前见到过 GraphQL 查询,你就知道 GraphQL 查询语言基本...

  • PRISMA快速入门之Node.js

    本文属使用Prisma构建GraphQL服务系列。 可以参见PRISMA快速入门之Typescript,大致相同。...

  • GraphQL快速入门教程

    摘要: 体验神奇的GraphQL! 原文:GraphQL 入门详解 作者:MudOnTire Fundebug经授...

  • 业务梳理(一)

    graphql入门:中文[https://graphql.cn/learn/] UI:业务信息 对应"@/comp...

  • Graphql集成SpringMVC和MongoDB

    什么是GraphQL GraphQL 是一种用于 API 的查询语言。 GraphQL 对你的 API 中的数据提...

  • GraphQL使用指南(开始)

    GraphQL使用指南(开始) Graphql 为查询而生,是一个由Facebook提出的应用层查询语言,所以我们...

  • GraphQL学习——执行

    一个GraphQL查询在被验证后,GraphQL服务器会将之执行。 一个例子 GraphQL工作原理:GraphQ...

网友评论

      本文标题:GraphQL入门之查询操作

      本文链接:https://www.haomeiwen.com/subject/evmozdtx.html