詳解如何使用Node.js連接數據庫ORM

ORM

在上文中我們講瞭如何使用node.js mysql2連接數據庫,接下來講講ORM

下面摘一段百科對ORM的介紹

對象關系映射(英語:Object Relational Mapping,簡稱ORM,或O/RM,或O/R mapping),是一種程序設計技術,用於實現面向對象編程語言裡不同類型系統的數據之間的轉換。從效果上說,它其實是創建瞭一個可在編程語言裡使用的“虛擬對象數據庫”。

講人話就是,在常用面向對象的語言中,我們用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語句執行,這樣就可以專註於業務而無需過多關註數據庫的細節瞭

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開發一個應用,感興趣的朋友記得關註一波,謝謝支持

以上就是詳解如何使用Node.js連接數據庫ORM的詳細內容,更多關於Node.js連接數據庫ORM的資料請關註WalkonNet其它相關文章!

推薦閱讀: