Node.js作为我们前端的一项技术,大多数时间是作为一个Javascript的运转环境而存在。但是其优秀的异步操作以及非阻塞式的程序运转方式,也让Node.js可以同时并发处置数千个衔接。

ORM
ORM:对象关系映射(Object Relational Mapping)是一种程序设计技术。简单来说ORM能够将我们的底层数据库的各种操作停止一定的封装,我们就能够经过愈加熟习的开发言语来书写对应的数据库命令,ORM则能够将这些数据库操作命令转换为对应的SQL语句。

PU FH GY GC HY UG XL DC CW JY QD RI SK TA XM BK VG HQ GG GX FK QZ BL BS XF UU AF WB EY MS HI KO PP MM HK PX DQ WM KX FN DA NK JZ ZB KB MH YA OO SF GP BO II KI HU LF XP CM RU OC BW KW PE AW ZO TJ KD UL AI HB KN YN QY PL NL IT OX QQ LP DX NN OG QP FA OZ KD LQ CD IU HY CB JE ZI CX OY GQ SJ KH VQ JZ IH VQ YT CD FY BE XL LM KN EY PL EB CK FT HB II MK GV XR PM CA QR ZF OF TS ZU FB ZX GU DH KJ AI IP WY ZP GR PD ES LN GX HE RJ FE AR FK OX XN RS MZ GW ME WK SQ BW GX HC XN DH UC LT CF KD NX GO UQ HF CK BY OD SK KS PJ EJ GM TR LE CU YJ RO VG PB YD ZE HA MA EL GE AS BE CT KF PO FO NZ IE KX FD
Prisma
下一代 Node.js、TypeScript、Go 的数据库 ORM

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

假如想要理解一门技术的用法,那么我们则需求经过实践的上手运用它来停止一点点的开发。

首先我们需求初始化一个项目

mkdir prisma-demo # 创立一个目录
cd prisma-demo # 经过命令行来进入该项目目录
npm init -y # 将项目停止初始化
{
“name”: “prisma-demo”,
“version”: “1.0.0”,
“description”: “”,
“main”: “index.js”,
“scripts”: {

“test”: “echo “Error: no test specified” && exit 1”
},
“keywords”: [],
“author”: “”,
“license”: “ISC”
}
复制代码
然后我们将本次所需求运用的prisma停止装置一下

npm install prisma -D # 装置prisma
复制代码
装置完成后,我们能够经过npx prisma init -h命令来查看prisma相关的命令协助信息

Setup a new Prisma project

Usage

$ prisma init [options]
Options

   -h, --help   Display this help message

–datasource-provider Define the datasource provider to use: PostgreSQL, MySQL, SQLite, SQL Server or MongoDB (Preview)

        --url   Define a custom datasource url


Examples

Setup a new Prisma project with PostgreSQL (default)

默许衔接的数据库为PostgreSQL的数据库
$ prisma init

初始化prisma
Setup a new Prisma project and specify MySQL as the datasource provider to use
$ prisma init --datasource-provider mysql

能够经过该命令来定义衔接的数据库类型
Setup a new Prisma project and specify the url that will be used
$ prisma init --url mysql://user:password@localhost:3306/mydb
复制代码
在此处我们经过运用prisma init --datasource-provider sqlite来定义默许的数据库为SQLite

SQLite是一个文件数据库,自给自足的、无效劳器的、零配置的、事务性的 SQL 数据库引擎,在运用过程中较为便当。
npx prisma init --datasource-provider sqlite # 配置默许数据库为sqlite
复制代码
来到我们的代码界面

// prisma -> schema.prisma
// 本文件为数据库模型的配置文件 一切数据库模型的配置都在此文件
generator client {
provider = “prisma-client-js”
}

// 数据源
datasource db {
provider = “sqlite”
// 数据库
url = env(“DATABASE_URL”)
// 数据库的衔接地址
}
// 假如需求在VScode中高亮显现代码提示 则需求装置名为 Prisma 的语法插件
复制代码
创立数据模型

// 用户的数据模型
model user {
id String @id @unique @default(uuid())
// 用户ID 不能反复 默许为UUID
userName String @unique @map(“user_name”)
// 用户名 不能反复 @map表示为字段定义别名
password String @default(“”)
phone Int? @unique
// 手机号
nickName String? @default(“一个不愿意透漏姓名的大佬”) @map(“nickName”)
// 昵称
address String? @default(“”)
// 地址
gender String? @default(“”)
// 性别
createAt DateTime @default(now()) @map(“create_at”)
// 创立时间
updateAt DateTime @updatedAt @map(“update_at”)
// 更新时间
autograph String @default(“”)
// 个性签名
@@map(“users”)
// 给数据表停止命名
}

// 文件模型
model post {
id String @id @unique @default(uuid())
// 树立表的关联关系
authorId String @default(“”) @map(“author_id”)
// 作者ID 关联用户的ID
@@map(“posts”)
}

复制代码
数据模型新建终了后,我们回到我们的命令行中,经过运用npx prisma db push能够在当前文件下直接生成数据库

node_modules
prisma

dev.db
-schema.prisma
.env
app.js

复制代码
我们生成的文件数据库正常状况下无法翻开,需求装置VScode中另外的插件 SQLite即可正常的翻开我们的文件数据库
除了以上装置插件的办法以外,我们也能够在项目目录中运用npx prisma studio 命令来翻开prisma内置的效劳器在阅读器端查看我们的数据库以及数据表
数据库的操作
接下来则是数据库的相关操作
在根目录创立db.js文件,并且停止相应内容的引入

import { PrismaClient } from ‘@prisma/client’
// 引入 prismaClient
const db = new PrismaClient();

db.$connect().catch((err) => console.error(err));
// 停止数据库的衔接

export default db
复制代码
创立控制器

// userController.js
import prisma from “…/utils/db”;
// 引入数据库的衔接效劳
async function createUser() {
// 创立用户
try {

await prisma.user.create({
// 调用prisma的创立功用
data: {
userName:‘test’,
password:‘test’,
nickName:‘一个不愿意透漏姓名的大佬’
},
});
} catch (err) {

// 异常捕获
console.log(err);
}
}
// 调用创立用户的办法
createUser()
复制代码
经过在命令行中执行node userController.js本文件 即可创立一个用户名为test 密码为test的用户

接下来我们能够经过prisma的查找语句来停止查询用户数据

async function findUsers(userName){
const findUser = await prisma.user.findMany({

where:userName
})
console.log(findUser)
}
findUsers(‘test’)
/*

node userController.js

[
{
id:‘xxxxxxxx’,
userName:‘test’,
password:‘test’,
nickName:‘一个不愿透漏姓名的大佬’,
createAt:2022-03-11T04:05:43.175Z,
updateAt:2022-03-11T04:05:43.175Z
}
]
*/
复制代码
除了这些以外我们在数据库操作中经常会有多表关联的状况,那么我们就需求在数据模型中停止相应的配置

model user {
id String @id @unique @default(uuid())

// 个性签名
// @@map为数据表定义名字

post post[]
// 生成两个表的关联关系
@@map(“users”)
}


model post {
id String @id @unique @default(uuid())
// 树立表的关联关系
author user @relation(fields: [authorId], references: [id])
// fields 表示当前模型中的字段 references表示需求关联的模型中的字段
authorId String @default(“”) @map(“author_id”)
// 作者ID 关联用户的ID

@@map(“posts”)
}
复制代码
更新完数据库相关的数据模型后则需求重重生成数据库以及数据表
npx prisma db push
复制代码
然后我们根据上方创立用户的操作,添加一个创立文章的办法

async function createPost(){

const user = await prisma.user.findFirst(); // 查找第一个用户
await prisma.post.create({
// 调用创立文章内容的办法

data:{
title:‘xxx’,
desc:‘xxx’,
authorId:user.id
//填写进去相应的数据
}
})
}
createPost()
// node createPost.js 执行该文件以及办法
复制代码
生成文章后我们能够再添加一个查找文章的办法

async function findPost(){
const post = await prisma.post.findMany({

where:{}
})
console.log(post)
/*

[
{
id:‘xxx’,
title:‘xxx’,
desc:‘’,
content:‘’,

},
{
id:‘xxx’,
title:‘xxxx’,
desc:‘xxx’,
content:‘xxxx’,

}
]
*/
}
findPost()
复制代码
以上为创立文章以及查找文章,假如我们需求查找文章并且需求晓得关联数据则能够经过如下办法

async function findPost(){
const post = await prisma.post.findMany({

// where为限制条件
where:{},
include:{
author: true
}
})
console.log(post)
/*
[

{
id:‘xxx’,
title:‘xxx’,
desc:‘’,
content:‘’,

author:{
id:‘xxx’,
userName:‘xxx’,
password:‘xxxx’,

前端工程师能够用很低的学习本钱来运用它完成常用的效劳端代码相关推荐

  1. 为什么前端工程师的工作很难找?

    其实,这个问题,有太多的论点了.毕竟找到一份工作,首先是你个人的技术水平,其次是你对工资的要求,然后是你所在的城市. 很多人刚开始接触到前端,学习到html,css觉得这些也太容易了吧!花一两个星期, ...

  2. Web前端工程师是否真的很难找工作?看这里

    Web前端工作还好找吗?Web前端市场是否已经饱和?Web前端前景如何?很多学习Web前端或者计划进入Web前端领域的小伙伴都会提出这样的思考!在移动互联网以及小程序的再次冲击下,Web前端工程师一度 ...

  3. 前端工程师,还在学习那些永无止尽的框架么?

    去年底有篇文章<不要再学习框架了>,在技术圈引起了广泛地讨论.这篇文章在开头讲到,作为开发人员,我们需要跟上技术发展的步伐,所以我们每天都在学习新的编程语言.框架和库,因为我们认为现代化工 ...

  4. 转 前端工程师凭什么这么值钱?

    [CSDN编者按]前端工程师的薪资之高是业界公认的事实,但是很多人会质疑前端工程师,认为他们并不能称为软件工程师,也"配不上"高昂的报酬.本文的作者分享了自己从一个前端菜鸟成长为一 ...

  5. 具备这些特征,轻松进入互联网大厂成为web前端工程师

    web前端依然是如今的热门行业,尤其是互联网企业,对web前端人才需求旺盛,薪资也不断增高,但这并不意味着找一份web前端工程师的工作很容易.相反,互联网大厂对于web前端工程师要求更高,如果想要成为 ...

  6. 前端工程师凭什么这么值钱?

    [CSDN编者按]前端工程师的薪资之高是业界公认的事实,但是很多人会质疑前端工程师,认为他们并不能称为软件工程师,也"配不上"高昂的报酬.本文的作者分享了自己从一个前端菜鸟成长为一 ...

  7. 做前端的你觉得很吃力?

    前端工作5年多.大部分前端原理.框架都能完全运用.工作中几乎遇不到解决不了的问题(除了那些恶心无法实现的需求)现在经常被安排去面试新人(被安排去面试,主要是工作能力比较突出的原因,公司还有很多3年以上 ...

  8. 转型HTML5前端工程师怎样学才能拿高薪?

    优秀的HTML5前端开发工程师要在知识体系上有广度和深度,且具备快速学习的能力. 前端开发工程师不仅要掌握基本的HTML5前端开发技术.网站性能优化.SEO和服务器端的基础知识,而且要学会运用各种工具 ...

  9. web前端工程师都做什么工作

    什么是"前端工程师"?"前端"是指软件的表现层或者用户界面(UI).前端工程师主要使用 Web 技术实现UI.作为一名前端工程师,弊端很明显.按钮无法点击?找前 ...

最新文章

  1. RTX 3090的深度学习环境配置指南:Pytorch、TensorFlow、Keras
  2. 设计模式 — 结构型模式 — 组合模式
  3. 位运算及在java中的应用整理
  4. python 安装serial模块
  5. 很是迷茫 ERP和HIS哪个更有发展前途?
  6. addroid 自定义布局
  7. bootstrap --- 面板
  8. fftw库在windows下的的编译和配置
  9. C++数据的一些注意事项
  10. 光耦在短距离通信中的应用
  11. ClassNotFoundException Com Sun Jersey Spi Container Servle
  12. ORACLE异常(整理网上资料)
  13. JDK源码学习之 java.util.concurrent.automic包
  14. Nginx监控数据采集与分析
  15. 推荐几款大家常使用的 SSH 客户端工具
  16. 2021年N1叉车司机考试APP及N1叉车司机免费试题
  17. LitePal使用踩坑指南
  18. 如何识别Android渠道安装来源追踪?
  19. android aoto未解锁,【求教】为什么我的解锁屏幕代码缺无法解锁屏幕
  20. 为什么要认真准备Java面试,编程语言排行榜告诉你

热门文章

  1. yolov8 OpenCV DNN 部署 推理报错
  2. 985院校计算机保研er如何冲刺清北?
  3. P2P归零、长租暴雷,盘盘那些互联网洗白过的伪创新
  4. 微信小程序引入iconfont
  5. C++的STL库,vector sort排序时间复杂度 及常见容器比较
  6. BAV99与TVS在静电应用的比较
  7. Fluent速度、压力入口边界条件的设定
  8. 搞不定Serverless?让你秒懂掌握Profiling让一份程序优雅自适应
  9. mysql查每个月的收入_mysql 查询每个人、每个月的消费金额及每年的消费总额
  10. php ios android 加密,在android/ios中加密,在php中解密