GraphQL入门之一对多关联查询
创建 Node.js 的工程
mkdir myapp
cd myapp
npm init (一路回车)
安装依赖包
npm install @apollo/server graphql
定义 Schema
创建 schema.graphql 文件,内容如下:
type Book {title: String!author: Author!
}type Author {name: String!books: [Book!]!
}type Query {books: [Book]authors: [Author]
}
schema 文件主要包括:
- 定义了一个一对多关系的两个类型:Book 和 Author。
- 定义了查询操作:Book 和 Author 列表。
实现处理器
创建 resolvers.js 文件,内容如下:
const book1 = {title: 'book1'};
const book2 = {title: 'book2'};
const book3 = {title: 'book3'};
const author1 = {name: 'author1', books: [book1]};
const author2 = {name: 'author2', books: [book2, book3]};
book1.author = author1;
book2.author = author2;
book3.author = author2;const books = [book1, book2, book3];
const authors = [author1, author2];const resolvers = {Query: {books: () => books,authors: () => authors,},
};module.exports = resolvers;
处理器文件主要包括:
- 初始化了一些一对多关联的测试数据
- 定义处理函数,这里不做什么特殊处理,直接返回两个列表即可
主程序
创建 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 GetBooksAndAuthors {books {title,author {name}}authors {namebooks {title}}
}
-
执行查询操作的时候,可以指定关联对象的属性,比如:在查询 books 列表的时候,可以指定关联的 author 只返回那些属性;同样在查询 authors 列表的时候,可以指定关联的 books 列表中只返回 book 的哪些属性。
-
这里如果我们不指定关联对象的属性,在执行查询的时候会报错,有兴趣的话,大家可以试试看报的是啥错。
查询结果
{"data": {"books": [{"title": "book1","author": {"name": "author1"}},{"title": "book2","author": {"name": "author2"}},{"title": "book3","author": {"name": "author2"}}],"authors": [{"name": "author1","books": [{"title": "book1"}]},{"name": "author2","books": [{"title": "book2"},{"title": "book3"}]}]}
}
相关文章:
GraphQL入门之一对多关联查询
创建 Node.js 的工程 mkdir myapp cd myapp npm init (一路回车)安装依赖包 npm install apollo/server graphql定义 Schema 创建 schema.graphql 文件,内容如下: type Book {title: String!author: Author! }type Author {name: String!books: [Boo…...
MATLAB和Python数值和符号计算可视化物理学气体动能和粒子速度
要点 Python物理学差分数值和符号计算 热动力学计算:统计力学,分子动力学模型 Python寻找弹性物体的运动,LAMMPS 分子动力学模拟器模拟2D气体分子,Python原子模拟绘图,Python数值计算原子平衡性,Python绘制…...

阿里云-零基础入门NLP【基于机器学习的文本分类】
文章目录 学习过程赛题理解学习目标赛题数据数据标签评测指标解题思路TF-IDF介绍TF-IDF 机器学习分类器TF-IDF LinearSVCTF-IDF LGBMClassifier 学习过程 20年当时自身功底是比较零基础(会写些基础的Python[三个科学计算包]数据分析),一开始看这块其实挺懵的&am…...

蓝桥杯模块综合——高质量讲解AT24C02,BS18B20,BS1302,AD/DA(PCF8591),超声波模块
AT24C02——就是一个存储的东西,可以给他写东西,掉电不丢失。 void EEPROM_Write(unsigned char * EEPROM_String,unsigned char addr , unsigned char num) {IIC_Start();IIC_SendByte(0xA0);IIC_WaitAck();IIC_SendByte(addr);IIC_WaitAck();while(nu…...

前端跨平台开发框架:简化多端开发的利器
🤍 前端开发工程师、技术日更博主、已过CET6 🍨 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 🕠 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》 🍚 蓝桥云课签约作者、上架课程《Vue.js 和 E…...

cesium.js加载模型后,重新设置旋转角度属性值
// 加载模型var position Cesium.Cartesian3.fromDegrees(longitude, latitude, height);// 计算矩阵var rollAngleDegrees 15; // 设置翻滚角度var rollAngleRadians Cesium.Math.toRadians(rollAngleDegrees); // 将角度转换为弧度var orientation Cesium.Transforms.eas…...

②免费AI软件开发工具测评:通义灵码 VS 码上飞
前言 我又双叒叕来测评了!上次给大家带来的是iFlyCode和CodeFlying两款产品的测评,受到了大家的一致好评~ 今天咱就继续来聊聊,这次我们选的的对象是通义灵码和码上飞,从名字上也能看到出来这两款产品一定是跟软件开发有关系的&…...

幻兽帕鲁游戏搭建(docker)
系列文章目录 第一章: 幻兽帕陆游戏搭建 文章目录 系列文章目录前言一、镜像安装1.创建游戏目录2.拉取镜像3.下载配置文件4.启动游戏 二、自定义配置总结 前言 这段时间一直在写论文还有找工作,也没学啥新技术,所以博客也很长时间没写了&am…...

unity报错出现Asset database transaction committed twice!
错误描述: 运行时报错 Assertion failed on expression: ‘m_ErrorCode MDB_MAP_RESIZED || !HasAbortingErrors()’Asset database transaction committed twice!Assertion failed on expression: ‘errors MDB_SUCCESS || errors MDB_NOTFOUND’ 解决办法&…...
去除项目git的控制 端口号的关闭
以下操作都是在windows下。只是记录一下。 find . -name “.git” | xargs rm -rf 查看所有分支 git branch -a 查看当前分支 git branch -a 切换分支 git chenkout develop docker 查看容器的ip docker inspect -f ‘{{.Name}} - {{range .NetworkSettings.Networks}}{{.IP…...

交叉注意力融合时域、频域特征的FFT + CNN -BiLSTM-CrossAttention电能质量扰动识别模型
往期精彩内容: 电能质量扰动信号数据介绍与分类-Python实现-CSDN博客 Python电能质量扰动信号分类(一)基于LSTM模型的一维信号分类-CSDN博客 Python电能质量扰动信号分类(二)基于CNN模型的一维信号分类-CSDN博客 Python电能质量扰动信号分类(三)基于Transformer…...
简单的Charles抓包教程
安装Charles 安装地址:https://www.charlesproxy.com/download/ 开关本机抓包 一般我们在抓取手机端内容时需要将Proxy菜单栏下的Windows Proxy取消勾选,禁止charles抓取本机上的请求信息。 注:开启电脑端抓包后,会为电脑添加局…...

如何构建Docker自定义镜像
说明:平常我们使用Docker运行各种容器,极大地方便了我们对开发应用的使用,如MySQL、Redis,以及各种中间件,使用时只要拉镜像,运行容器即可。本文介绍如何创建一个Demo,自定义构建一个镜像。 开…...

一起学数据分析_2
写在前面:代码运行环境为jupyter,如果结果显示不出来的地方就加一个print()函数。 一、数据基本处理 缺失值处理: import numpy as np import pandas as pd#加载数据train.csv df pd.read_csv(train_chinese.csv) df.head()# 查看数据基本…...
请解释Redis是什么?它有哪些主要应用场景?Redis支持哪些数据类型?并描述每种数据类型的特性和使用场景。
请解释Redis是什么?它有哪些主要应用场景? Redis是一款内存高速缓存NoSQL数据库,使用C语言编写,它支持丰富的数据类型,如String、list、set、zset、hash等,并且这些数据类型都直接支持数据的原子性操作&…...

在centos8中部署Tomcat和Jenkins
参考链接1:tomcat安装和部署jenkins_jenkins和tomcat-CSDN博客 参考链接2:--配置开机启动tomcat文件 x超详细:Centos8安装Tomcat并配置开机自动启动_centos设置tomcat开机自启-CSDN博客文章浏览阅读4.4k次,点赞4次&…...
机器学习模型—K means
文章目录 机器学习模型—K means聚类的目标k 均值原理k 均值 的实现手动实现Python 实现K 的确定 手肘法总结机器学习模型—K means K-Means 聚类是一种无监督机器学习算法,它将未标记的数据集分为不同的簇。本文旨在探讨 k 均值聚类的基本原理和工作原理以及实现。 无监督机…...
QT UI设计
在QT中添加VTK 在main函数中初始化 //VTK的初始化语句 #ifndef INITIAL_OPENGL #define INITIAL_OPENGL #include <vtkAutoInit.h> VTK_MODULE_INIT(vtkRenderingOpenGL); VTK_MODULE_INIT(vtkInteractionStyle); VTK_MODULE_INIT(vtkRenderingVolumeOpenGL); VTK_MODU…...
前端小白的学习之路(CSS3 一)
提示:CSS3 是 Cascading Style Sheets(层叠样式表)的第三个主要版本,引入了许多新的特性和增强功能,用于设计和布局网页。本章记录CSS3新增选择器,盒子模型。 目录 一、C3新增选择器 1) 属性选择器 1.[c…...

春暖花开,一起来看看2024年品牌春分海报吧!
春分(Vernal equinox)已至,春花烂漫、燕子归来、百草回芽。 今天我们要分享的是2024年品牌发布的春分节气海报合集,快来随我们一起感受这昂扬、蓬勃的春意吧! (1)泸州老窖 (2)BD…...

VB.net复制Ntag213卡写入UID
本示例使用的发卡器:https://item.taobao.com/item.htm?ftt&id615391857885 一、读取旧Ntag卡的UID和数据 Private Sub Button15_Click(sender As Object, e As EventArgs) Handles Button15.Click轻松读卡技术支持:网站:Dim i, j As IntegerDim cardidhex, …...
前端倒计时误差!
提示:记录工作中遇到的需求及解决办法 文章目录 前言一、误差从何而来?二、五大解决方案1. 动态校准法(基础版)2. Web Worker 计时3. 服务器时间同步4. Performance API 高精度计时5. 页面可见性API优化三、生产环境最佳实践四、终极解决方案架构前言 前几天听说公司某个项…...

《从零掌握MIPI CSI-2: 协议精解与FPGA摄像头开发实战》-- CSI-2 协议详细解析 (一)
CSI-2 协议详细解析 (一) 1. CSI-2层定义(CSI-2 Layer Definitions) 分层结构 :CSI-2协议分为6层: 物理层(PHY Layer) : 定义电气特性、时钟机制和传输介质(导线&#…...
将对透视变换后的图像使用Otsu进行阈值化,来分离黑色和白色像素。这句话中的Otsu是什么意思?
Otsu 是一种自动阈值化方法,用于将图像分割为前景和背景。它通过最小化图像的类内方差或等价地最大化类间方差来选择最佳阈值。这种方法特别适用于图像的二值化处理,能够自动确定一个阈值,将图像中的像素分为黑色和白色两类。 Otsu 方法的原…...

项目部署到Linux上时遇到的错误(Redis,MySQL,无法正确连接,地址占用问题)
Redis无法正确连接 在运行jar包时出现了这样的错误 查询得知问题核心在于Redis连接失败,具体原因是客户端发送了密码认证请求,但Redis服务器未设置密码 1.为Redis设置密码(匹配客户端配置) 步骤: 1).修…...

如何在网页里填写 PDF 表格?
有时候,你可能希望用户能在你的网站上填写 PDF 表单。然而,这件事并不简单,因为 PDF 并不是一种原生的网页格式。虽然浏览器可以显示 PDF 文件,但原生并不支持编辑或填写它们。更糟的是,如果你想收集表单数据ÿ…...
Mysql8 忘记密码重置,以及问题解决
1.使用免密登录 找到配置MySQL文件,我的文件路径是/etc/mysql/my.cnf,有的人的是/etc/mysql/mysql.cnf 在里最后加入 skip-grant-tables重启MySQL服务 service mysql restartShutting down MySQL… SUCCESS! Starting MySQL… SUCCESS! 重启成功 2.登…...

代码规范和架构【立芯理论一】(2025.06.08)
1、代码规范的目标 代码简洁精炼、美观,可持续性好高效率高复用,可移植性好高内聚,低耦合没有冗余规范性,代码有规可循,可以看出自己当时的思考过程特殊排版,特殊语法,特殊指令,必须…...

Axure 下拉框联动
实现选省、选完省之后选对应省份下的市区...
在RK3588上搭建ROS1环境:创建节点与数据可视化实战指南
在RK3588上搭建ROS1环境:创建节点与数据可视化实战指南 背景介绍完整操作步骤1. 创建Docker容器环境2. 验证GUI显示功能3. 安装ROS Noetic4. 配置环境变量5. 创建ROS节点(小球运动模拟)6. 配置RVIZ默认视图7. 创建启动脚本8. 运行可视化系统效果展示与交互技术解析ROS节点通…...