Prisma ORM 第一章 安装与使用

Prisma 中文文档

express + ts

1. 配置prisma(读音:普锐斯吗)

1. 安装

mkdir hello-prisma
cd hello-prisma
npm init -y
npm install prisma typescript ts-node @types/node --save-dev
pnpm init
pnpm add prisma typescript ts-node @types/node --save-dev

2. 创建tsconfig.json文件

{
  "compilerOptions": {
    "sourceMap": true,
    "outDir": "dist",
    "strict": true,
    "lib": ["esnext"],
    "esModuleInterop": true
  }
}

3. 初始化prisma项目

npx prisma
npx prisma init
# 创建了一个名为prisma的新目录,其中包含一个名为schema.prisma的文件和一个位于项目根目录中的.env文件
  • 此时的目录结构
    在这里插入图片描述

4. 配置数据库

  • prisma/schema.prisma
datasource db {
  provider = "mysql"	// 使用mysql的需要修改
  url      = env("DATABASE_URL")
}
  • .env
DATABASE_URL="mysql://johndoe:randompassword@localhost:3306/mydb"
DATABASE_URL="mysql://用户名:密码@数据库地址:3306/库名"

5. vscode安装插件

在这里插入图片描述
在这里插入图片描述

2. 使用prisma

1. 数据模型映射到数据库

  • prisma/schema.prisma 添加表数据
model Post {  // 著作
  id        Int      @id @default(autoincrement())
  createdAt DateTime @default(now())
  updatedAt DateTime @updatedAt
  title     String   @db.VarChar(255)
  content   String?
  published Boolean  @default(false)
  author    User     @relation(fields: [authorId], references: [id])  // 外键
  authorId  Int // 关联id
}

model Profile { // 个人简介
  id     Int     @id @default(autoincrement())
  bio    String?
  user   User    @relation(fields: [userId], references: [id])
  userId Int     @unique
}

model User {  // 作者
  id      Int      @id @default(autoincrement())
  email   String   @unique
  name    String?
  posts   Post[]  // 一对多
  profile Profile?  // 一对一
}
  • 数据模型映射到数据库
npx prisma migrate dev --name [init:自己起个名字]
  • 目录结构
    在这里插入图片描述
  • 数据库生成对应的表
    在这里插入图片描述

2. 使用express

  1. 安装express
pnpm add express
# express报错,安装express类型声明
pnpm add @types/express
  1. 安装@prisma/client
pnpm add @prisma/client
# pnpm 安装 @prisma/client,好像不会自动调用 prisma generate 
npx prisma generate
  1. 创建 src/app.ts文件
import express from "express";

import { PrismaClient } from "@prisma/client";
const app = express();
const prisma = new PrismaClient();
app.use(express.json());

const port = 3000;

app.listen(port, () => {
  console.log(`Server is running on port ${port}`);
});
  1. 运行express
nodemon src/app.ts
# 如果没有nodemon,全局安装
pnpm i nodemon -g
  • 遇到的报错
# 如果报错:throw new Error('@prisma/client did not initialize yet. Please run "prisma generate" and try to import it again.');
npx prisma generate
  • 遇到的错误(不要修改package.json中的type=model):
    • 解决办法 : 链接
TypeError [ERR_UNKNOWN_FILE_EXTENSION]: Unknown file extension ".ts"
上一篇:KClass-关于kotlin中的反射


下一篇:spring boot项目日志怎么加?