Prisma ORM 第一章 安装与使用

Prisma 中文文档

express + ts

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

1. 安装

shell 复制代码
mkdir hello-prisma
cd hello-prisma
npm init -y
npm install prisma typescript ts-node @types/node --save-dev
shell 复制代码
pnpm init
pnpm add prisma typescript ts-node @types/node --save-dev

2. 创建tsconfig.json文件

typescript 复制代码
{
  "compilerOptions": {
    "sourceMap": true,
    "outDir": "dist",
    "strict": true,
    "lib": ["esnext"],
    "esModuleInterop": true
  }
}

3. 初始化prisma项目

shell 复制代码
npx prisma
npx prisma init
# 创建了一个名为prisma的新目录,其中包含一个名为schema.prisma的文件和一个位于项目根目录中的.env文件
  • 此时的目录结构

4. 配置数据库

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

5. vscode安装插件


2. 使用prisma

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

  • prisma/schema.prisma 添加表数据
javascript 复制代码
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?  // 一对一
}
  • 数据模型映射到数据库
shell 复制代码
npx prisma migrate dev --name [init:自己起个名字]
  • 目录结构
  • 数据库生成对应的表

2. 使用express

  1. 安装express
shell 复制代码
pnpm add express
# express报错,安装express类型声明
pnpm add @types/express
  1. 安装@prisma/client
shell 复制代码
pnpm add @prisma/client
# pnpm 安装 @prisma/client,好像不会自动调用 prisma generate 
npx prisma generate
  1. 创建 src/app.ts文件
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
powershell 复制代码
nodemon src/app.ts
powershell 复制代码
# 如果没有nodemon,全局安装
pnpm i nodemon -g
  • 遇到的报错
powershell 复制代码
# 如果报错: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):
powershell 复制代码
TypeError [ERR_UNKNOWN_FILE_EXTENSION]: Unknown file extension ".ts"
相关推荐
YUELEI11810 天前
Prisma ORM 第四章 表之间关系的建立和删除
prisma
白雾茫茫丶18 天前
前端的全栈之路:基于 Vue3 + Nest.js 全栈开发的后台应用
postgresql·vue3·vite·pinia·nest.js·prisma
stonefisher3 个月前
推荐Nodejs下高效存储树到数据库工具库-FlexTree
javascript·数据库·nodejs·tree·prisma
逐星ing5 个月前
Prisma是什么:现代数据库工具和ORM
数据库·prisma
亮子AI9 个月前
【PostgreSQL】Ubuntu 下使用 Prisma 的初始化流程
数据库·ubuntu·postgresql·prisma
愧怍1210 个月前
有了 Prisma,就别用 TypeORM 了
typescript·orm·prisma
超级架构师1 年前
【全栈开发】使用NestJS、Angular和Prisma 打造全栈Typescript开发
前端·typescript·nestjs·angular·angular.js·graphql·prisma
芝士思维1 年前
NextJS开发:Prisma开启SQL日志输出
数据库·sql·nextjs·prisma
昆吾kw1 年前
Koa + Prisma 快速入门
mysql·node.js·prisma·koa.js