详解如何使用Node.js连接数据库ORM

 更新时间:2022年12月19日 15:15:39   作者:鱼露  
这篇文章主要为大家介绍了详解如何使用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的资料请关注脚本之家其它相关文章!

相关文章

  • node学习记录之搭建web服务器教程

    node学习记录之搭建web服务器教程

    本篇文章主要介绍了详解node学习记录——搭建web服务器,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-02-02
  • Nodejs 发送Post请求功能(发短信验证码例子)

    Nodejs 发送Post请求功能(发短信验证码例子)

    这篇文章主要介绍了Nodejs 发送Post请求功能(发短信验证码例子),需要的朋友可以参考下
    2017-02-02
  • 基于node搭建服务器,写接口,调接口,跨域的实例

    基于node搭建服务器,写接口,调接口,跨域的实例

    今天小编就为大家分享一篇基于node搭建服务器,写接口,调接口,跨域的实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-05-05
  • 在Node.js中实现视频列表的分页展示功能

    在Node.js中实现视频列表的分页展示功能

    在Web应用开发中,展示大量数据时经常会用到分页功能,以提升用户体验和页面加载性能,本篇博客将介绍如何在使用Node.js和MongoDB的项目中实现视频列表的分页展示,文中有相关的代码示例,需要的朋友可以参考下
    2024-04-04
  • Nodejs实现批量修改图片尺寸工具

    Nodejs实现批量修改图片尺寸工具

    本文主要为大家介绍了一个Node.js工具,可以通过简单的命令行操作,允许用户批量调整图片尺寸,感兴趣的小伙伴可以跟随小编一起学习一下
    2024-10-10
  • 说说node中的可读流和可写流的区别

    说说node中的可读流和可写流的区别

    这篇文章主要介绍了说说node中的可读流和可写流的区别,详细的介绍了可读流和可写流,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    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开发框架,并且支持jade等多种模板。下面这篇文章主要给大家介绍了关于node.js express中app.param用法的相关资料,文中通过示例代码介绍的非常详细,需要的朋友可以参考借鉴,下面来一起看看吧。
    2017-07-07
  • 如何使用nvm实现nodejs版本管理(版本删除,版本切换及版本添加)

    如何使用nvm实现nodejs版本管理(版本删除,版本切换及版本添加)

    这篇文章主要给大家介绍了关于如何使用nvm实现nodejs版本管理(版本删除,版本切换及版本添加)的相关资料,nvm是一个node版本管理工具,通过它可以安装多种node版本并且可以快速、简单的切换node版本,需要的朋友可以参考下
    2023-10-10
  • 详解node如何让一个端口同时支持https与http

    详解node如何让一个端口同时支持https与http

    众所周知node是一个高性能的web服务器,使用它可以很简单的创建一个http或https的服务器。这篇文章主要介绍了详解node如何让一个端口同时支持https与http
    2017-07-07

最新评论