Prisma初体验

  • Prisma逆向生成数据模型
    • 1.创建工程目录
    • 2.项目初始化
    • 3.创建tsconfig.json
    • 4.创建Prisma schema文件
    • 5.工程目录
    • 6.配置数据信息
    • 7.逆向生成数据模型
    • 8.变更数据表中的信息
    • 9.执行index.ts文件

Prisma逆向生成数据模型

初次体验Prisma工程搭建,在ORM领域表现不错。Prisma是一个面向Node.js和TypeScript的开源ORM。它用于替代编写普通的SQL,或使用另一种数据库访问工具,如SQL查询生成器(如knex.js)或ORMs(如TypeORM和Sequelize)。Prisma目前支持PostgreSQL、MySQL、SQLServer和SQLite。虽然Prisma可以与普通JavaScript一起使用,但它包含TypeScript,并提供了一种类型安全级别,超出TypeScript生态系统中其他Orm的保证范围。如下工程在window 10环境下的实施。

1.创建工程目录

D:\project\example\typeorm> mkdir hello-prisma
D:\project\example\typeorm> cd hello-prisma

2.项目初始化

D:\project\example\typeorm>npm init -y
D:\project\example\typeorm>npm install prisma typescript ts-node @types/node --save-dev

3.创建tsconfig.json

在工程更目录下创建tsconfig.json,并添加如下配置信息:

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

注:可以使用tsc --init创建,windows系统需要识别tsc命令。

4.创建Prisma schema文件

在工程目录中使用如下命令创建Prisma schema文件(系统默认文件名为schema.prisma):

D:\project\example\typeorm> npx prisma init

5.工程目录


注意:index.ts文件为后期创建的文件。

6.配置数据信息

在工程目录中的.env文件中设置DATABASE_URL(本工程使用的mysql数据库):

DATABASE_URL="mysql://[用户名]:[密码]@localhost:3306/world?schema=public"

在prisma文件夹下的schema.prisma文件中修改数据库类型:

datasource db {provider = "mysql" //初始默认值为“postgresql”url      = env("DATABASE_URL")
}generator client {provider = "prisma-client-js"
}

7.逆向生成数据模型

使用如下命令生成数据模型【数据库中存在表数据】:

D:\project\example\typeorm> npx prisma introspect

在文件中系统会自动增加模型数据信息:

model post {id        Int      @id @default(autoincrement())createdAt DateTime @default(now())updatedAt DateTimetitle     String   @db.VarChar(255)content   String?published Boolean  @default(false)authorId  Intuser      user     @relation(fields: [authorId], references: [id])@@index([authorId], name: "authorId")
}
//如下是新增model部分
model profile {id     Int     @id @default(autoincrement())bio    String?userId Int     @uniqueuser   user    @relation(fields: [userId], references: [id])
}model user {id      Int      @id @default(autoincrement())email   String   @uniquename    String?post    post[]profile profile?
}

8.变更数据表中的信息

在工程目录文件中添加index.ts文件,其内容如下:

import { PrismaClient } from '@prisma/client'
const prisma = new PrismaClient()
async function main() {// ... you will write your Prisma Client queries here
//查询数据库中user的记录数据
const allUsers = await prisma.user.findMany()
console.log(allUsers)//对user表进行添加数据await prisma.user.create({data: {name: 'Alice',email: 'alice@prisma.io',posts: {create: { title: 'Hello World' },},profile: {create: { bio: 'I like turtles' },},},})
//查找数据const allUsers1 = await prisma.user.findMany({include: {posts: true,profile: true,},})console.dir(allUsers1, { depth: null })
//更新post数据const post = await prisma.post.update({where: { id: 1 },data: { published: true },})console.log(post)const posts = await prisma.profile.findUnique({where: { id: 1 },}).user().posts()console.log(posts)
}
main().catch(e => {throw e}).finally(async () => {await prisma.$disconnect()
})

9.执行index.ts文件

使用如下命令执行index.ts脚本:

D:\project\example\typeorm> npx ts-node index.ts

总结,简单、明了、高效,让程序员更加关注业务。Typeorm同样是体验性很好的ORM,就是在逆向工程方面在npm v7版本下bug问题,大多是包不兼容问题。后期会继续研究与整合新组件或框架,搭建一个高效的研发平台架构。敬请关注,谢谢!

Prisma初体验【逆向生成数据模型】相关推荐

  1. smart-doc初体验-springboot生成自动文档

    smart-doc初体验 一.为什么要引入smart-doc? 二.对比swagger 三.使用 四.讨论 1.设计先行模式 2.代码先行 五.体验 六.附录 1.完整的配置项: 2.官方地址: 一. ...

  2. 【JS逆向系列】某乎x96参数与jsvmp初体验

    [JS逆向系列]某乎x96参数与jsvmp初体验 js分析 jsvmp分析 第一种解决方案-补环境 第二种解决方案-修改操作码 第三种解决方案-算法还原 参考文章 样品网址:aHR0cHM6Ly93d ...

  3. 【JS 逆向百例】网洛者反爬练习平台第七题:JSVMPZL 初体验

    关注微信公众号:K哥爬虫,持续分享爬虫进阶.JS/安卓逆向等技术干货! 文章目录 声明 逆向目标 逆向过程 Hook 关键方法 日志断点 / 插桩调试 声明 本文章中所有内容仅供学习交流,抓包内容.敏 ...

  4. Navicat Data Modeler(ndm2)数据模型逆向生成表

    文章目录 ndm2数据模型逆向生成表 ndm2数据模型逆向生成表 选择比对compare可以进行同步 这里不要选择外键(程序去维护就好),模型里面标明外键是为了方便理清表与表之间的逻辑关系

  5. python与php8-php8的扩展arginfo生成工具及工具初体验

    php8提供了非常方便的扩展函数或类参数信息的生成工具. 只需要维护一份xyz.stub.php,就可以使用工具生成 xyz_arginfo.h. 毫无疑问,这种方式,又降低了广大 phper 开发扩 ...

  6. C#代码生成工具:文本模板初体验 使用T4批量修改实体框架(Entity Framework)的类名...

    转自:http://www.cnblogs.com/huangcong/archive/2011/07/20/1931107.html 在之前的文本模板(T4)初体验中我们已经知道了T4的用处,下面就 ...

  7. wxWidgets刚開始学习的人导引(3)——wxWidgets应用程序初体验

    wxWidgets刚開始学习的人导引全文件夹   PDF版及附件下载 1 前言 2 下载.安装wxWidgets 3 wxWidgets应用程序初体验 4 wxWidgets学习资料及利用方法指导 5 ...

  8. 深度探索Hyperledger技术与应用之超级账本初体验(附部署代码)

    2019独角兽企业重金招聘Python工程师标准>>> 本章零基础地介绍了如何快速体验超级账本搭建的区块链网络,我们先绕过了比较复杂的初始化配置,用官方提供的fabric-sampl ...

  9. Flutter初体验(二)—— 创建第一个Flutter APP

    Flutter初体验(二)--- 创建第一个Flutter APP 在第一篇文章 Flutter初体验(一)---Mac 安装配置,学习了配置 Flutter 开发环境,并运行了Demo项目,本篇根据 ...

  10. Java8初体验(二)Stream语法详解(转)

    本文转自http://ifeve.com/stream/ Java8初体验(二)Stream语法详解 感谢同事[天锦]的投稿.投稿请联系 tengfei@ifeve.com 上篇文章Java8初体验( ...

最新文章

  1. sklearn SVM(支持向量机)模型使用RandomSearchCV获取最优参数及可视化​​​​​​​
  2. 清华大学:智能驾驶背景下转向系统发展趋势
  3. sql loader 导入数据时的问题
  4. C# HttpRequest基础连接已经关闭: 接收时发生意外错误
  5. 前端学习(3041):vue+element今日头条管理-控制用户的访问权限
  6. c int转char数组_C语言 指向数组和字符串的指针
  7. 读懂 Redis 源码,我总结了这7点心得
  8. python-基础-代码备注与变量命名方法
  9. 傲娇Android二三事之诡诡异异的图片加载
  10. 字符编码【utf8,unicode,ANSI,ascii】
  11. 网络游戏植入营销案例
  12. 【UDS诊断服务入门】
  13. android里面的USB功能-----Accessory模式
  14. 经典的机器人入门资料
  15. Beyond Compare 过期解决办法
  16. vivos9桌面字体样式怎样修改
  17. ssdb mysql_成都项目中因为MYSQL与SSDB备分时间不一致,导致主键产生器错误解决一例...
  18. openOCD和Jlink仿真器
  19. python爬虫猫眼电影票房_python爬取猫眼电影top100排行榜
  20. Dungeon Master POJ - 2251 BFS

热门文章

  1. 提神醒脑 MVP、MVVM 关系精讲
  2. ODI报错/警告/调度异常流程信息
  3. 【SpringBoot】Bean 注入失败问题汇总
  4. python idle背景设置为黑色_python IDLE颜色设置
  5. 666RPG(计数dp)
  6. 77个提升自我的网站
  7. RHEL8.4系统镜像
  8. AMiner推荐论文:Flexible artificial Si-In-Zn-O/ion gel synapse and its application to sensory-neuromorphi
  9. 拳皇重生服务器维护,《拳皇97 OL》3月10日更新维护公告
  10. 吐血总结~ 计算机网络基础汇总