榫卯盒子 - 开源|人工智能|知识分享|创新工具|科技爱好者 Logo
首页
内容盒子
工具盒子
千里快问
关于
登录 →
榫卯盒子 - 开源|人工智能|知识分享|创新工具|科技爱好者 Logo
首页 内容盒子 工具盒子 千里快问 关于
登录
  1. 首页
  2. 经验
  3. 数据库ORM简明教程,prisma中文教程

数据库ORM简明教程,prisma中文教程

  • 经验
  • 发布于 2024-07-25
  • 34 次阅读
榫卯盒子
榫卯盒子

本文旨在详细介绍 ORM(Object Relational Mapping)技术及其使用方法,特别是 Prisma 库在 Node.js 环境下的应用。

1. ORM 介绍

ORM(对象关系映射)是一种技术,它使得开发者可以通过操作对象的方式来操作数据库。通过 ORM,SQL 查询语句可以被替换成编程语言中的对象操作。例如:

SELECT * FROM users WHERE name = 'yayu';

可以用 JavaScript 中的 ORM 库(假设使用虚构的 orm-library)来改写为:

var orm = require('orm-library');
var user = orm("users").where({ name: 'yayu' });

ORM 的优点在于,它允许开发者使用熟悉的编程语言操作数据库,并能方便地更换数据库(例如从 PostgreSQL 切换到 MySQL)。

2. Prisma 介绍

Prisma 是下一代的 Node.js 和 TypeScript ORM,其主要优点包括直观的数据模型、自动化迁移、类型安全和自动补全。通过定义数据模型文件(schema.prisma),开发者可以轻松地与数据库进行交互。

2.1. 安装与初始化

在项目根目录安装 Prisma 作为开发依赖:

npm install prisma --save-dev
npx prisma init

这一步会创建一个 prisma 文件夹,其中包含 schema.prisma 文件,用于定义数据模型,以及 .env 文件,用于定义环境变量(如数据库地址)。

2.2. 连接 MySQL 数据库

在 prisma/schema.prisma 文件中定义数据库连接:

generator client {
  provider = "prisma-client-js"

}
datasource db {
  provider = "mysql"
  url      = env("DATABASE_URL")
}

在 .env 文件中配置数据库地址:

DATABASE_URL="mysql://root:admin@localhost:3306/notes"

创建数据库:

mysql -u root -p
CREATE DATABASE notes;

运行 npx prisma db pull 连接数据库。

2.3. 定义数据模型

在 prisma/schema.prisma 文件中定义数据模型:

model User {
  id       String @id @default(uuid())
  username String
  password String
  notes    Note[]
}

model Note {
  id        String   @id @default(cuid())
  title     String   @db.VarChar(255)
  content   String?
  createdAt DateTime @default(now())
  updatedAt DateTime @updatedAt
  author    User     @relation(fields: [authorId], references: [id])
  authorId  String
}

运行 npx prisma migrate dev 同步数据库。

2.4. 使用 Prisma Client

安装 Prisma Client:

npm install @prisma/client

在项目中使用 Prisma Client 进行数据库操作:

import { PrismaClient } from '@prisma/client'

const prisma = new PrismaClient()

// 创建用户

const user = await prisma.user.create({

  data: {

    username: 'alice',

    password: 'password123'

  }

})

// 查询用户

const users = await prisma.user.findMany()

3. 高级功能

3.1. Prisma Migrate

Prisma 提供了 Prisma Migrate 工具,用于管理数据库迁移。通过 schema.prisma 文件定义数据模型后,可以运行以下命令进行迁移:

npx prisma migrate dev

3.2. Prisma Studio

Prisma Studio 是一个用于查看和编辑数据库数据的 GUI 工具。运行以下命令启动 Prisma Studio:

npx prisma studio

3.3. 数据模型定义

Prisma 的数据模型定义包括字段名称、字段类型、类型修饰符和属性。例如:

model Post {

  id  Int @id @default(autoincrement())

  title String

}

4. 关系建立

Prisma 支持多种关系类型(如一对多、一对一和多对多),通过 @relation 属性定义。例如:

model User {

  id       String @id @default(uuid())

  username String

  password String

  notes    Note[]

}

model Note {

  id        String   @id @default(cuid())

  title     String

  content   String?

  createdAt DateTime @default(now())

  updatedAt DateTime @updatedAt

  author    User     @relation(fields: [authorId], references: [id])

  authorId  String

}

5. 常用操作

5.1. 创建记录

const user = await prisma.user.create({

  data: {

    username: 'alice',

    password: 'password123',

    notes: {

      create: [

        { title: 'First Note', content: 'This is my first note.' },

        { title: 'Second Note', content: 'This is my second note.' }

      ]

    }

  }

})

5.2. 查询记录

const users = await prisma.user.findMany({

  include: {

    notes: true

  }

})

5.3. 更新记录

const updatedUser = await prisma.user.update({

  where: { id: 'user_id' },

  data: { password: 'newpassword123' }

})

5.4. 删除记录

const deletedUser = await prisma.user.delete({

  where: { id: 'user_id' }

})

6. Prisma CLI

常用命令包括:

npx prisma --help          # 查看所有命令

npx prisma init            # 初始化 Prisma

npx prisma generate        # 生成 Prisma Client

npx prisma studio          # 启动 Prisma Studio

npx prisma migrate dev     # 迁移数据库

npx prisma db pull         # 同步数据库到数据模型

npx prisma db push         # 同步数据模型到数据库

总结

Prisma 是一款强大的 ORM 工具,提供了便捷的数据模型定义、自动化迁移和直观的开发体验。在 Node.js 项目中,Prisma 是一个常见的技术选型,适合初学者和经验丰富的开发者。通过本文的介绍,希望你能更好地理解和使用 Prisma。

标签: #orm 1 #prisma 1
相关文章
高原肉牛文化小镇

高原肉牛文化小镇 2025-04-15 21:05

公安备案流程、所需材料和信息

公安备案流程、所需材料和信息 2024-11-01 12:48

公安备案流程、所需材料和信息 依据 《计算机信息网络国际联网安全保护管理办法》相关规定,各网站/App在工信部进行ICP备案成功后,如网站/App为中国内地提供服务(在中国内地可访问该网站/App),仍需在网站/App开通之日起30日内登录全国互联网安全管理服务平台提交公安联网备案申请。 账号注册

本地代码通过git同步到服务器(宝塔面板,ubuntu系统)

本地代码通过git同步到服务器(宝塔面板,ubuntu系统) 2024-07-26 17:54

在本地 (Mac) 上将代码通过 Git 推送到远程 (Ubuntu) 服务器并自动检出 1. 准备工作 确保在本地和远程服务器上都安装了 Git。如果没有安装,可以使用以下命令进行安装: Mac: brew install git Ubuntu: sudo apt update sudo ap

数据库ORM简明教程,prisma中文教程

数据库ORM简明教程,prisma中文教程 2024-07-25 17:14

本文旨在详细介绍 ORM(Object Relational Mapping)技术及其使用方法,特别是 Prisma 库在 Node.js 环境下的应用。 1. ORM 介绍 ORM(对象关系映射)是一种技术,它使得开发者可以通过操作对象的方式来操作数据库。通过 ORM,SQL 查询语句可以被替换成

Fanmingming/Live:可直连访问的电视/广播图标库与相关工具项目

Fanmingming/Live:可直连访问的电视/广播图标库与相关工具项目 2024-07-21 14:45

项目简介 Fanmingming/Live 是一个专注于实时视频处理和直播的开源项目。它提供了一系列工具和库,使开发者能够快速构建和部署流媒体应用。该项目支持多种流媒体协议,优化了视频传输的延迟和带宽使用,适用于多种操作系统和平台。 用户评价 用户普遍对该项目给予正面评价,认为它在视频流的稳定性和传

ZHO-ZHO-ZHO/ComfyUI-Workflows-ZHO:强大的工作流合集,优化你的ComfyUI体验

ZHO-ZHO-ZHO/ComfyUI-Workflows-ZHO:强大的工作流合集,优化你的ComfyUI体验 2024-07-18 19:03

项目简介: ZHO-ZHO-ZHO/ComfyUI-Workflows-ZHO 是一个为 ComfyUI 用户设计的工作流合集,包含多个定制化和创新的工作流程,以优化和扩展 ComfyUI 的功能。这个项目利用各种工具和API,如 Stable Diffusion、Gemini-pro 等,整合了多

目录
Copyright © 2025 榫卯盒子 All Rights Reserved. Powered by 千里快问.
滇ICP备20004463号-4