欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 科技 > 名人名企 > NodeJs ORM(knex + prisma)【学习笔记】

NodeJs ORM(knex + prisma)【学习笔记】

2025/5/8 13:40:19 来源:https://blog.csdn.net/weixin_62234646/article/details/147702057  浏览:    关键词:NodeJs ORM(knex + prisma)【学习笔记】

ORM

ORM(对象关系映射,Object-Relational Mapping) 是一种编程技术,用于将数据库中的关系型数据(如表、行、列)与应用程序中的面向对象数据(如对象、类、属性)进行自动转换。它的核心目的是简化数据操作,使开发者无需直接编写SQL语句即可操作数据库。

优点缺点
代码可读性高,符合面向对象思维性能损耗(如N+1查询问题)
减少手动SQL错误(如拼写错误)学习曲线陡峭(需理解框架机制)
快速开发原型对复杂查询支持可能不如原生SQL灵活

下面介绍两种 NodeJs 的 ORM 框架。

knex

官网地址:https://knexjs.org
Knex是一个基于JavaScript的 查询生成器 ,它允许你使用JavaScript代码来生成和执行SQL查询语句。它提供了一种简单和直观的方式来与关系型数据库进行交互,而无需直接编写SQL语句。你可以使用Knex定义表结构、执行查询、插入、更新和删除数据等操作。

安装

npm i knex

knex_sql.js

import knex from "knex";const sql = knex({client: "mysql2",connection: {host: '127.0.0.1',port: 3306,user: 'your_database_user',password: 'your_database_password',database: 'myapp_test',},// pool: { min: 0, max: 7 },
})const data = await sql("nick").select();

prisma

官网地址:https://www.prisma.io
中文官网地址:https://prisma.yoga

下一代 Node.js、TypeScript、Go 的数据库 ORM。

Prisma是一个开源的数据库工具链项目,帮助开发人员更快地构建应用程序并减少错误,支持PostgreSQL、MySQL、MongoDB、SQL Server和SQLite。

安装

npm i primsma -g

初始化

// 查看初始化命令
prisma init -h
// 生成项目 mysql 你用的数据库
prisma init --datasource-provider mysql

目录结构

node_mysql_server_prisma/
├── prisma/
│	└── schema.prisma
├── .env
└── .gitignore

.env

// DATABASE_URL="mysql://账号:密码@主机:端口号/库名
DATABASE_URL="mysql://johndoe:randompassword@localhost:3306/mydb

schema.prisma

generator client {provider = "prisma-client-js"output   = "../generated/prisma"
}datasource db {provider = "mysql"url      = env("DATABASE_URL")
}/* 编写表结构 */
// 文章表
model Post {id        Int      @id @default(autoincrement())title     Stringcontent   Stringauthor    User     @relation(fields: [authorId], references: [id]) // 外键authorId  Int // 关联ID 和 user表的id关联createdAt DateTime @default(now())updatedAt DateTime @updatedAt
}
// 用户表 一对多关系
model User {id        Int      @id @default(autoincrement()) // id 自增name      Stringemail     String   @unique // 唯一posts     Post[]   // 一对多关系createdAt DateTime @default(now())updatedAt DateTime @updatedAt
}

执行命令生成数据表,重名表可以选择是否覆盖

prisma migrate dev
// 自定义一个名称
Enter a name for the new migration:

完事之后,会自动帮你下载 prisma@prisma/client 依赖,就成了。

在这里插入图片描述

最后,它对 typeScript 很友好,开始你的快乐编程吧!

参考
https://juejin.cn/post/7335458600150712372
https://juejin.cn/post/7337188759056384015

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词