标题
《小鑫发现》之GraphQL框架Prisma
介绍
这是一个新的前后端交互的方案,不是一定是最好的,但是却很有意思,一种可以让前端人员自由去控制数据库,脱离开后端人员开发SQL读取数据库一层。
虽然不见得能解决所有场景,只有善加利用,很可能解决绝大部分的场景,减少人力,提高效率。
很类似之前的hibernate那种对象的形式操作数据库,其实官网的第一句话,就是“Next-generation ORM
for Node.js and TypeScript”,可知他是个ORM,跟mybatis是一类。去理解如何用对象,或者说 用图的形式去描述数据。
版本和下载
node v15.5.1 下载地址
npm 7.3.0 下载地址
小记
本人在研究过程中发现,通过官方的ts教程,一直报错,原因暂时不知道,主要是不会ts,另外也可能是阿里镜像的问题,即使我删了也是不行,所以这个教程,从下载官方的demo开始。咱们分两步,第一步先构建一个脚本的框架,先去试试Prisma的魅力,第二步,构建一个node服务,框架式Express+Prisma,将其服务化,提供给前端。
初次构建
准备工作
此次咱们使用MySQL,
数据库脚本地址 下载地址
这里直接沾出来,数据库名为mydb,加了点自己的小小创意。
CREATE DATABASE IF NOT EXISTS mydb DEFAULT CHARACTER SET utf8mb4 DEFAULT COLLATE utf8mb4_general_ci;
USE mydb;
CREATE TABLE User (
id INTEGER PRIMARY KEY AUTO_INCREMENT NOT NULL,
name VARCHAR(255),
email VARCHAR(255) UNIQUE NOT NULL
);
CREATE TABLE Post (
id INTEGER PRIMARY KEY AUTO_INCREMENT NOT NULL,
title VARCHAR(255) NOT NULL,
createdAt TIMESTAMP NOT NULL DEFAULT now(),
content TEXT,
published BOOLEAN NOT NULL DEFAULT false,
authorId INTEGER NOT NULL,
FOREIGN KEY (authorId) REFERENCES User(id)
);
CREATE TABLE Profile (
id INTEGER PRIMARY KEY AUTO_INCREMENT NOT NULL,
bio TEXT,
userId INTEGER UNIQUE NOT NULL,
FOREIGN KEY (userId) REFERENCES User(id)
);
INSERT INTO `mydb`.`Post`(`title`, `createdAt`, `content`, `published`, `authorId`) VALUES ('Hello World', '2021-01-21 15:53:37', NULL, 0, 6);