node本地连接服务器的数据库_基于Node.jsORM框架Sequelize的数据库迁移一

4b235d3a8a6c51e041e0b40da36ce7ac.png

开课吧Web前端教程

前言

在日常的后端项目开发中,我们经常需要和数据库打交道。在这个过程中,我们需要创建数据库、表还有一些测试数据。许多时候,因为业务需求的变更导致的数据库结构的变化,需要修改数据库,添加新的测试数据等。像这类问题,如果每次都要依靠手工的方式去做是很繁琐也难免会出现错误的,在讲求自动化的今天,我们其实是可以通过各种工具来协助我们完成这项工作的。不同的语言其实都有类似的工具,这篇文章,我们就以基于 Node.js 的一个框架:Sequelize 来进行了解和学习。

介绍

Sequelize 其实是一个功能强大的基于 Node.js 开发的 ORM 框架:

• 支持 Promise;

• 支持 Postgres、MySQL、MariaDB、SQLite、MSSQL;

• 支持事务等;

它的功能很强大,也很丰富,这里不去一一阐述了,这篇文章,我们主要来了解一下 Sequelize 提供的一个叫 Migrations(迁移) 的功能。

什么是迁移?

Sequelize 中的迁移的功能类似于 Git 。通过它,我们可以追踪数据库的状态以及变更记录,我们会把这些信息存储到指定的文件中,然后执行指定的命令来更新数据库或者恢复到某个原有状态。

迁移工具 - sequelize-cli

我们首先创建一个项目,使用 npm init 初始化

安装

使用迁移工具,需要安装依赖 sequelize 和 mysql2

文章中使用的数据为:mysql

npm i sequelize mysql2

安装迁移工具 sequelize-cli

npm 方式

npm install --save sequelize-cli

使用

./node_modules/.bin/sequelize ...

npx 方式

我们也可以通过 npx 来更便捷的使用迁移工具

npx sequelize-cli ...

npx 为 npm 5.2 版本以后自带,如果不能使用,可以手动安装:npm install -g npx

基本概念与使用

初始化

我们可以通过 init 初始化迁移项目

npx sequelize-cli init

它会在当前目录下创建下面几个文件夹(后面加备注的为 init 生成的文件夹 )

├── config(配置文件目录)

│ └── config.json(默认配置文件)

├── migrations(迁移脚本)

├── models(模型脚本)

├── node_modules

├── package-lock.json

├── package.json

└── seeders(种子脚本)

目录文件说明

配置 - config

主要提供链接数据所需要的一些配置

{

"development": {

// 数据库服务器主机

"host": "127.0.0.1",

// 数据库类型

"dialect": "mysql",

// 数据库服务器连接用户名

"username": "root",

// 数据库服务器连接密码

"password": null,

// 数据库名称

"database": "database_development"

},

"test": {

//...

},

"production": {

//...

}

}

正如我们看到的,配置文件中默认会有三个不同环境的配置:development、test、production,分别对应:开发环境、测试环境、生产环境(我们也可以根据具体情况增减)。同时配合当前系统环境变量 NODE_ENV 自动载入不同的配置。

迁移脚本 - migrations

这里的迁移脚本就是我们这篇文章需要关注的重点了,数据库中的每一张表、字段的建立,以及后续的更新都是通过执行迁移脚本来完成的。

模型脚本 - models

模型文件其实就是用对象/类(这里指JavaScript)来描述数据库表/字段的文件,主要思想就是让我们像对象一样操作数据库(也就是关系映射模型 - ORM),有点类似 DOM 的意思。这个主要用于项目实际的业务代码中使用,如果只是迁移或者后续的种子,可不需要模型,所以这篇文章中,我们不会过多的去介绍模型的使用。

种子脚本 - seeders

有的时候,我们需要为数据库写入一些测试数据,那么这个时候,我们就可以通过种子脚本来完成这个需求。

做完一些准备工作,也介绍了一些基本概念,下面我们通过一个简单的案例需求进一步了解 sequelize-cli 的使用。

创建/销毁 数据库

sequelize-cli 提供了许多的命令来帮助我们完成特定的需求,我们可以通过 --help 查看帮助

npx sequelize-cli --help

创建数据库

npx sequelize-cli db:create

要连接的数据库信息,和要创建的数据库名称都在配置文件中

销毁数据库

npx sequelize-cli db:drop


以上是酷仔今日整理的“基于Node.js ORM框架 Sequelize 的数据库迁移(一)”一文,希望为正在学习Web前端的同学提供参考。以上内容为酷仔整理的上半部分,剩余内容请看下文。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/567376.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

使用OfficeTool免费安装Office

1、在office tool plus官网下载office tool plus Office Tool Plus 官方网站 - 一键部署 Office 2、安装office tool plus 3、卸载原office:点击工具箱-修复工具-移除Office,选择使用Office Tool Plus移除Office,点击开始。 4、点击部署-产品…

语言线性拟合线对称_文科生都能看懂的机器学习教程:梯度下降、线性回归、逻辑回归...

【新智元导读】虽然在Coursera、MIT、UC伯克利上有很多机器学习的课程,包括吴恩达等专家课程已非常经典,但都是面向有一定理科背景的专业人士。本文试图将机器学习这本深奥的课程,以更加浅显易懂的方式讲出来,让没有理科背景的读者…

c/c++读取txt文件中指定行的内容_和尧名大叔一起从0开始学Python编程-简单读写文件

0基础自学编程是很痛苦的一件事情,所以我想把自己学习的这个过程记录下来,让想学编程的人少走弯路,大叔文化程度较低,可能会犯一些错误,欢迎大家督促我。今天,我们来学习一下用Python简单读写文件&#xff…

excel从只有省市县的地址中分别提取省、市、县

提取省 LEFT(H2,MIN(FIND({"省","市","区"},H2&"省市区"))) 提取市 LEFT(SUBSTITUTE(H23,I23,""),MIN(FIND({"市","区","县","州"},SUBSTITUTE(H23,I23,"")&&qu…

两个字符串组成tuple_史上最全python字符串操作指南

惨不忍睹拿出了看家的老中医野广告,都没能拯救惨淡的selenium剧集。上周五和朋友聊天,说希望看到一些python基础的知识。本来还担心更新基础的东西没人看,但现在看来,最差不过selenium系列了...哈哈。虽然说更新基础知识&#xff…

语言五子棋无ai程序框图_微软多语言预训练模型T-ULRv2登顶XTREME排行榜

编者按:为进一步实现用 AI 赋能用户体验,微软正在不断拓展多语言模型的边界。近日,由微软图灵团队与微软亚洲研究院联合探索的最新跨语言研究成果——多语言预训练模型 T-ULRv2,登顶 XTREME 排行榜,T-ULRv2 可以在相同…

excel学习

1.高配筛选—切片器 (1)创建超级表 选中某个单元格,插入,表格。 (2)插入切片器 插入—切片器 (3)改变切片器样式 选中菜单栏切片器,按钮,选择横排 2.subtotal实现动态编号 3-counta 过滤筛选 103-counta 过滤筛选和隐藏

keil3如何放大字体_Word技巧之快速放大字体!快来GET新技能!

一般情况下我们都会选择用Word编辑文章,文章编辑完成之后我们通常会对文章进行排版。在排版的过程中如果我们需要将Word字体放大该怎么办呢?今天倾尘跟大家分享的就是办公小技巧:Word 里的字体如何无限放大?方法一:点击…

dlib简便下载方法

一、查看已安装Python版本 二、下载python对应版本的dlib.wlh文件 官方网上边是没有3.7版本往后的dlib,想要下载其它版本的dlib自己去找了,但是我这里只有3.8的需要下载的可以点这里 提取码:dlib 三、在dlib.wlh文件所在路径下,安…

stm32 web get 参数_BlackHat2020议题之Web缓存投毒

周末闲着没事就来学习下新的思路,文章很长,花了一天时间才码出来,所以,你懂我意思吧?对了,周末打算出去走走,所以就不更文了本文将会介绍Web缓存投毒的各种骚姿势以及利用链,并会搭配相应案例进行讲解&…

c3p0 服务启动获取连接超时_JDBC数据库连接池

连接池的本质是构建一个容器,容器是用来存创建好的线程,http连接、数据库连接、netty连接等各个连接池的使用大致分为三个部分1、首先是初始化连接池,根据设置相应的参数、连接池的大小、核心连接数等参数,初始化创建数据库、http…

python与数据处理_python数据处理:数据合并和Reshaping

本文资料来自于: Python for Data Analysis: Chapter5, 7, 12 文中实例查看地址:http://nbviewer.jupyter.org/github/RZAmber/for_blog/blob/master/learn_numpy.ipynb 1. Combing and Merging Data Sets 在pandas中,数据可以通过三种方式进…

使用详解_Log4j2使用详解

日志框架简单比较(slf4j、j.u.l、log4j、logback、log4j2 )slf4j:slf4j是对所有日志框架制定的一种规范、标准、接口,并不是一个框架的具体的实现,因为接口并不能独立使用,需要和具体的日志框架实现配合使用…

paddlehub安装及对口罩检测

1、安装 python -m pip install paddlepaddle -i https://mirror.baidu.com/pypi/simple pip install -i https://mirror.baidu.com/pypi/simple paddlehub 报错,解决方案: >pip install -i https://mirror.baidu.com/pypi/simple paddlehub --use…

语言专项精讲课程 赵海英_最全汇总:沪江日语课程体系指南

沪江日语课程可分为六大类,你可以根据自己的学习意愿快速定位。当然,也有课程涉及多个分类,请仔细查看一下不同课程的偏重,选择适合自己的课程。一、零基础直达 0-N1签约名师:同类课程人气王 签约课程;19节…

学习opencv3_如何高效学习计算机视觉?

计算机视觉是人工智能的一个热门方向,很多人想要入门,但是却找不到方向。对于初学者来说,最快的入门方法是边实践边学习,也就是要掌握计算机视觉的开发工具。但其实对初学者来说并不太友好,主要有几个原因:…

ora-03113 访问某条记录_用了Excel十几年,你居然不知道“记录单”?!可能错过一个亿……...

点击蓝字发送【2020】免费领 100图表模板!本文作者:竺兰本文审核:小爽本文编辑:竺兰作为一个 Excel 数据搬运工,我每天的工作就是不断地往表格中输入数据,苦恼啊。但同样作为一个「懂点 Excel」的我&#x…

python三维数组切片_【NumPy学习指南】day4 多维数组的切片和索引

ndarray支持在多维数组上的切片操作。为了方便起见,我们可以用一个省略号(...)来 表示遍历剩下的维度。 (1)举例来说,我们先用arange函数创建一个数组并改变其维度,使之变成一个三维数组&#x…

批量修改栏目名_Endnote中英文混排批量修改小技巧

来源:卓琳 赵一鸣 北医三院 临床流行病学和循证医学 如果参考文献量大,涉及多种类型和语言,手工附上参考文献非常低效,还是得借助文献管理软件。由于output style选择的不同,中文参考文献的书写格式有误,有…

python中值滤波去除椒盐噪声_Python实现图像去噪方式(中值去噪和均值去噪)

实现对图像进行简单的高斯去噪和椒盐去噪。 代码如下: import numpy as np from PIL import Image import matplotlib.pyplot as plt import random import scipy.misc import scipy.signal import scipy.ndimage from matplotlib.font_manager import FontProperti…