email or profile name翻译中文


email or profile name翻译中文  

《探索GraphQL框架Prisma之旅》

介绍

这是一个新兴的前后端交互方案,虽然不一定是最佳的,但其有趣之处在于,它让前端开发者能够直接控制数据库,无需依赖后端开发者编写的SQL语句。这种方案有可能解决大部分场景的问题,提高效率和减少人力。它的操作方式类似于之前的hibernate,以对象或图的形式描述数据。正如所述,它是一个为Node.js和TypeScript的下一代ORM(对象关系映射)。

环境准备

node版本:v15.5.1

下载地址:[Node.js中文版](/zh-cn/)

npm版本:7.3.0

下载地址同上。

研究过程

在研究过程中,我尝试按照官方的TypeScript教程进行操作,但遇到了一些报错。由于我不熟悉TypeScript以及可能存在的阿里镜像问题,我决定从下载官方demo开始。我们的第一步是构建一个脚本框架,先体验Prisma的魅力。第二步是构建一个基于Express和Prisma的node服务,将其服务化,供前端使用。

初次构建

准备工作

我们这次使用MySQL数据库。数据库脚本可以直接从官方下载,数据库名为mydb,我做了一些小小的创新。

创建数据库的SQL语句如下:

sql

CREATE DATABASE IF NOT EXISTS mydb DEFAULT CHARACTER SET utf8mb4 DEFAULT COLLATE utf8mb4_general_ci;

USE mydb;

CREATE TAE User (

id INTEGER PRIMARY KEY AUTO_INCREMENT NOT NULL,

name VARCHAR(255),

email VARCHAR(255) UNIQUE NOT NULL

);

CREATE TAE Post (

id INTEGER PRIMARY KEY AUTO_INCREMENT NOT NULL,

title VARCHAR(255) NOT NULL,

createdAt TIMESP NOT NULL DEFAULT now(),

content TEXT,

published BOOLEAN NOT NULL DEFAULT false,

authorId INTEGER NOT NULL,

FOREIGN KEY (authorId) REFERENCES User(id)

);

CREATE TAE Profile (

id INTEGER PRIMARY KEY AUTO_INCREMENT NOT NULL,

bio TEXT,

userId INTEGER UNIQUE NOT NULL,

FOREIGN KEY (userId) REFERENCES User(id)

);

然后插入一些测试数据。

下载官方的demo后,目录结构如下:

start 文件夹包含:

package.json(关于项目依赖的配置文件)

prisma(关键目录,包含dev.db和schema.prisma等重要配置)

script.js(本次使用的脚本)

makefile

DATABASE_URL="mysql://root:.0.1:3306/mydb"

然后编辑schema.prisma文件,将provider改为mysql:

css

datasource db {

provider = "mysql"

url = env("DATABASE_URL")

  email or profile name翻译中文