最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

詳解如何使用Node.js連接數(shù)據庫ORM

 更新時間:2022年12月19日 15:15:39   作者:魚露  
這篇文章主要為大家介紹了詳解如何使用Node.js連接數(shù)據庫ORM示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪

ORM

上文中我們講了如何使用node.js mysql2連接數(shù)據庫,接下來講講ORM

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

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

講人話就是,在常用面向對象的語言中,我們用class(不一定要class)來映射數(shù)據庫中的表,用實例化對象來映射表中的每一條數(shù)據,每一欄用對象屬性表示

比如下面這個類可以映射為數(shù)據庫中的表,有兩列數(shù)據,分別是name和age

class User {
    name: string
    age: string
}

下載量

目前在nodejs中常用的ORM有prisma,sequlize,typeorm等等

下面是他們的下載量對比

typeorm

接下來我們就來嘗試一下如何用typeorm來連接數(shù)據庫, typeorm提供了一些裝飾器讓我們來描述一張表的結構

import { Entity, PrimaryGeneratedColumn, Column } from "typeorm";
@Entity()
export class User {
  @Column()
  name: string;
  @Column()
  age: string;
}

CRUD的時候只要像操作一個對象那樣操作即可,框架會自動幫你生成sql語句執(zhí)行,這樣就可以專注于業(yè)務而無需過多關注數(shù)據庫的細節(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來連接數(shù)據庫, 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  
    }  
});

同樣,對一行數(shù)據的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連接數(shù)據庫ORM的詳細內容,更多關于Node.js連接數(shù)據庫ORM的資料請關注腳本之家其它相關文章!

相關文章

  • node學習記錄之搭建web服務器教程

    node學習記錄之搭建web服務器教程

    本篇文章主要介紹了詳解node學習記錄——搭建web服務器,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-02-02
  • Nodejs 發(fā)送Post請求功能(發(fā)短信驗證碼例子)

    Nodejs 發(fā)送Post請求功能(發(fā)短信驗證碼例子)

    這篇文章主要介紹了Nodejs 發(fā)送Post請求功能(發(fā)短信驗證碼例子),需要的朋友可以參考下
    2017-02-02
  • 基于node搭建服務器,寫接口,調接口,跨域的實例

    基于node搭建服務器,寫接口,調接口,跨域的實例

    今天小編就為大家分享一篇基于node搭建服務器,寫接口,調接口,跨域的實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-05-05
  • 在Node.js中實現(xiàn)視頻列表的分頁展示功能

    在Node.js中實現(xiàn)視頻列表的分頁展示功能

    在Web應用開發(fā)中,展示大量數(shù)據時經常會用到分頁功能,以提升用戶體驗和頁面加載性能,本篇博客將介紹如何在使用Node.js和MongoDB的項目中實現(xiàn)視頻列表的分頁展示,文中有相關的代碼示例,需要的朋友可以參考下
    2024-04-04
  • Nodejs實現(xiàn)批量修改圖片尺寸工具

    Nodejs實現(xiàn)批量修改圖片尺寸工具

    本文主要為大家介紹了一個Node.js工具,可以通過簡單的命令行操作,允許用戶批量調整圖片尺寸,感興趣的小伙伴可以跟隨小編一起學習一下
    2024-10-10
  • 說說node中的可讀流和可寫流的區(qū)別

    說說node中的可讀流和可寫流的區(qū)別

    這篇文章主要介紹了說說node中的可讀流和可寫流的區(qū)別,詳細的介紹了可讀流和可寫流,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-06-06
  • socket.io斷線重連的幾種場景及處理方法

    socket.io斷線重連的幾種場景及處理方法

    Socket.IO是一個庫,可用于在瀏覽器和服務器之間進行實時,雙向和基于事件的通信,下面這篇文章主要給大家介紹了關于socket.io斷線重連的幾種場景及處理方法,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下
    2023-03-03
  • node.js express中app.param的用法詳解

    node.js express中app.param的用法詳解

    express.js是nodejs的一個MVC開發(fā)框架,并且支持jade等多種模板。下面這篇文章主要給大家介紹了關于node.js express中app.param用法的相關資料,文中通過示例代碼介紹的非常詳細,需要的朋友可以參考借鑒,下面來一起看看吧。
    2017-07-07
  • 如何使用nvm實現(xiàn)nodejs版本管理(版本刪除,版本切換及版本添加)

    如何使用nvm實現(xiàn)nodejs版本管理(版本刪除,版本切換及版本添加)

    這篇文章主要給大家介紹了關于如何使用nvm實現(xiàn)nodejs版本管理(版本刪除,版本切換及版本添加)的相關資料,nvm是一個node版本管理工具,通過它可以安裝多種node版本并且可以快速、簡單的切換node版本,需要的朋友可以參考下
    2023-10-10
  • 詳解node如何讓一個端口同時支持https與http

    詳解node如何讓一個端口同時支持https與http

    眾所周知node是一個高性能的web服務器,使用它可以很簡單的創(chuàng)建一個http或https的服務器。這篇文章主要介紹了詳解node如何讓一個端口同時支持https與http
    2017-07-07

最新評論

南和县| 丹棱县| 湘乡市| 隆尧县| 涟源市| 柏乡县| 和田市| 津南区| 进贤县| 吴忠市| 云林县| 怀安县| 那曲县| 浦县| 平乡县| 岐山县| 自贡市| 宁强县| 山东省| 项城市| 潍坊市| 逊克县| 沂源县| 绿春县| 双流县| 西安市| 格尔木市| 姚安县| 祁连县| 淮滨县| 米脂县| 巴中市| 那曲县| 读书| 奉新县| 叶城县| 宾川县| 德昌县| 娱乐| 枣阳市| 山丹县|