詳解如何使用Node.js連接數據庫ORM
ORM
在上文中我們講了如何使用node.js mysql2連接數據庫,接下來講講ORM
下面摘一段百科對ORM的介紹
對象關系映射(英語:Object Relational Mapping,簡稱ORM,或O/RM,或O/R mapping),是一種程序設計技術,用于實現面向對象編程語言里不同類型系統的數據之間的轉換。從效果上說,它其實是創(chuàng)建了一個可在編程語言里使用的“虛擬對象數據庫”。
講人話就是,在常用面向對象的語言中,我們用class(不一定要class)來映射數據庫中的表,用實例化對象來映射表中的每一條數據,每一欄用對象屬性表示
比如下面這個類可以映射為數據庫中的表,有兩列數據,分別是name和age
class User { name: string age: string }
下載量
目前在nodejs中常用的ORM有prisma,sequlize,typeorm等等
下面是他們的下載量對比
typeorm
接下來我們就來嘗試一下如何用typeorm來連接數據庫, typeorm提供了一些裝飾器讓我們來描述一張表的結構
import { Entity, PrimaryGeneratedColumn, Column } from "typeorm"; @Entity() export class User { @Column() name: string; @Column() age: string; }
CRUD的時候只要像操作一個對象那樣操作即可,框架會自動幫你生成sql語句執(zhí)行,這樣就可以專注于業(yè)務而無需過多關注數據庫的細節(jié)了
const user = new User(); user.name = "jym"; user.age = 18; await repository.save(user); const allUsers = await repository.find(); const u = await repository.findOne({ name: "jym" }); await repository.remove(u);
sequlize
接下來我們就來嘗試一下如何用sequlize來連接數據庫, sequlize提供了define讓我們來定義一張表的結構
const { Sequelize, DataTypes } = require('sequelize'); const sequelize = new Sequelize('jym', 'root', 'password', { host: 'localhost', dialect: 'mysql' }); const User = sequelize.define('User', { // 在這里定義模型屬性 name: { type: DataTypes.STRING, }, age: { type: DataTypes.STRING } });
同樣,對一行數據的CRUD可以映射為對象實例的操作
const u = await User.create({ name: "jym" }); console.log(u.name); // "jym" await u.save(); // 查詢所有用戶 const users = await User.findAll(); ... const u = await User.findOne({ where: { name: 'jym' } }); u.name = 'test' u.save() u.destroy()
prisma
prisma也是差不多的方式,只不過prisma提供了另一套 Prisma schema語法來描述自己的應用模型,相比上面兩個,它的語法更簡潔,描述能力也不比class語法差,其實定義一套這樣的語法也滿足依賴倒置的原則,這樣在以后要擴展其他語言比如GO,JAVA之類的也很方便。
model User { id Int @id @default(autoincrement()) email String @unique name String? posts Post[] }
import { PrismaClient } from '@prisma/client' const prisma = new PrismaClient() const user = await prisma.user.findUnique({ where: { name: 'jym', }, })
接下來會進一步講解如何用node.js開發(fā)一個應用,感興趣的朋友記得關注一波,謝謝支持
以上就是詳解如何使用Node.js連接數據庫ORM的詳細內容,更多關于Node.js連接數據庫ORM的資料請關注腳本之家其它相關文章!
相關文章
node.js + socket.io 實現點對點隨機匹配聊天
這篇文章主要介紹了node.js + socket.io 實現點對點隨機匹配聊天,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-06-06