一、创建模型与迁移

https://github.com/sequelize/cli

有了数据库,里面还要有 数据表。这次的项目非常简单,现在要建的表也只有一张,名字叫做 articles。使用代码操作这些表,需要有模型,现在咱们就来创建一个模型。在创建模型的时候,还会自动生成一个迁移文件。

$ sequelize model:generate --name Article --attributes title:string,content:text

模型的名字叫做 Article,这张表有两个字段,一个是标题,使用的是 string 类型。另一个是内容,使用了 text 类型。如果你对数据库还不怎么了解,你可以先简单的把 string 理解成比较短的字符串,存的内容有限。text 是比较长的字符串,可以存很多东西进去。

1.模型文件

打开 models/article.js,这个就是模型文件,使用 Node.js 操作数据库都就需要它了。现在项目需求比较简单,不需要在模型中修改什么。所以这里咱们保持不动就好,到时候可以直接使用。

2.迁移文件

打开 migrations/xxx-create-article.js,这个是迁移文件,里面保存的是 Articles 的字段。注意下,sequelize 中默认规定,模型的名称是单数,而数据表是复数

代码的 up 部分,可以看到除了 titlecontent 外,还自动出现了个所有表都需要有的默认字段。第一个是 id,你可以理解成就是给每条记录加了一个编号。到时候需要修改哪条记录,直接叫它的编号,它就自己会跑出来了。

id 字段是自增的,第一条记录的值,自动会填上 1。第二条,默认自动就会填上 2了。

底下,还有两个字段,createdAtupdatedAt。一个是新增的时候,自动会填充进时间。另一个是当修改的时候,也会自动填充进去现在的时间。

代码的 down 部分,是 up 的反向操作。up是建表,而 down 部分是删除表。updown 他们都分别有自己命令来运行。

3.运行迁移

迁移文件,咱们也是只看看就好,不需要再调整什么了。当我们运行命令的时候,数据库中就会自动建拥有这些字段的 Articles 表了。现在来运行迁移

$ sequelize db:migrate

打开 Sequel Pro,刷新下,果然看到这张表了。里面所包含的字段,正是咱们迁移文件里定义好的。

二、创建种子文件

表建完了以后,下一步就是要填充一些测试数据进去了。这里需要用到的是种子文件。先来跑命令,新建一个种子文件

$ sequelize seed:generate --name article

1.修改种子

打开 seeders/xxx-article.jsup 代码部分,去掉注释,删除说明文字后,将表名改为Articles。数组里面,改成自己想要的默认数据。如果有多个数据,中间用逗号分隔。

down 部分,去掉注释后,只需要改表名就好了。

'use strict';module.exports = {up: (queryInterface, Sequelize) => {return queryInterface.bulkInsert('Articles', [{title: '武汉最好吃的小吃是什么?',content: "肯定是三鲜豆皮,热干面一点都不好吃!",createdAt: new Date(),updatedAt: new Date()},{title: '今天天气可真好啊',content: "狂风暴雨特别凉快哦,欢迎每年来武汉看海!",createdAt: new Date(),updatedAt: new Date()}], {});},down: (queryInterface, Sequelize) => {return queryInterface.bulkDelete('Articles', null, {});}
};

也可以是这样

'use strict';module.exports = {up: async (queryInterface, Sequelize) => {/*** Add seed commands here.** Example:* await queryInterface.bulkInsert('People', [{*   name: 'John Doe',*   isBetaMember: false* }], {});*/await queryInterface.bulkInsert('Articles', [{title: '武汉最好吃的小吃是什么?',content: "肯定是三鲜豆皮,热干面一点都不好吃!",createdAt: new Date(),updatedAt: new Date()},{title: '今天天气可真好啊',content: "狂风暴雨特别凉快哦,欢迎每年来武汉看海!",createdAt: new Date(),updatedAt: new Date()}], {});},down: async (queryInterface, Sequelize) => {/*** Add commands to revert seed here.** Example:* await queryInterface.bulkDelete('People', null, {});*/await queryInterface.bulkDelete('Articles', null, {});}
};

2.运行种子

种子文件修改好了,这节课的最后一个命令,运行迁移。

$ sequelize db:seed:all

Tips: 上面这条命令,是运行所有的种子文件。如果只想运行指定的种子文件,可以执行 sequelize db:seed --seed xxx-article

刷新数据库,看到咱们想填充的内容,已经自动插入到数据表中了。


总结 日常开发项目数据库操作的步骤:

步骤 命令 说明
第一步 sequelize model:generate --name Article --attributes … 建模型和迁移文件
第二步 人工处理 根据需求调整模型和迁移文件
第三步 sequelize db:migrate 运行迁移,生成数据表
第四步 sequelize seed:generate --name article 新建种子文件
第五步 人工处理 将种子文件修改为自己想填充的数据
第六步 sequelize db:seed:all 运行种子文件,将默认数据填充到数据表中

node用express写后端restful接口实战三:sequelize操作数据库:模型(Model)、迁移(Migration)与种子(Seeders)相关推荐

  1. Node.js之 express写后端接口

    参考 https://blog.csdn.net/studysinklc/article/details/103166451 一 1 首先,新建一个Node.js项目,在项目目录下安装express ...

  2. node.js,Express如何同时api接口同时socket通信服务器

    app.js  服务器启动文件 const express = require('express') const app = express() const bodyParser = require( ...

  3. node.js+express,实现RESTful API

    node代码如下(exptest.js): var express = require('express'); var bodyParser = require('body-parser'); var ...

  4. Node项目使用Sequelize操作数据库(一)(包括模型,增,删、改等)

    Sequelize 是一个基于 Promise 的 Node.js ORM,目前支持 Postgres.MySQL.SQLite 和 Microsoft SQL Server.它具有强大的事务支持,关 ...

  5. 从零到一的react.js+node.js+express.js+mysql产品开发全流程

    序言 组长说要使自己对产品在技术层面有一个清晰且足够的了解,最好自己动手开发一个迷你产品,例如todolist,因为公司有提供员工自学使用的服务器,所以我就来试试了,而且一步一步的记录自己的学习过程, ...

  6. 【Restful接口】restful接口的两种使用方式

            小编最近的项目是好几个团队的一块合作,由于项目大,功能多,各个团队负责的东西不同,我的团队除了自己的开发前端和后端外,还负责给别的团队提供后端支持,在这里就用上了restful接口. ...

  7. Mongodb 数据库基本操作语句,结合 Node.js + express + mongoose (实现增、删、改、查,批量增加、修改等,创建临时表,多表查询......)

    版本说明 "MongoDB": "4.0.9", // cmd命令窗输入:mongo --version "node": 10.13.0, ...

  8. 实战react技术栈+express前后端博客项目(8)-- 前端管理界面标签管理+后端对应接口开发...

    项目地址:https://github.com/Nealyang/R... 本想等项目做完再连载一波系列博客,随着开发的进行,也是的确遇到了不少坑,请教了不少人.遂想,何不一边记录踩坑,一边分享收获呢 ...

  9. Node.js—Express、Express 路由 、Express 中间件、使用 Express 写接口

    目标: 能够使用 express.static() 快速托管静态资源 能够使用 express 路由精简项目结构 能够使用常见的 express 中间件 能够使用 express 创建API接口 能够 ...

最新文章

  1. python 获取打印的内容并保存到记事本里面
  2. HSQLDB安装与使用
  3. html不可选择的按钮,HTML功能无法使用按钮
  4. C++学习——C++中的四种类型转换
  5. php post请求后端拿不到值_PHP解决Vue发起POST请求,接收不到数据
  6. Elasticsearch基础(一)mapping
  7. 百度地图与高德地图比较
  8. ACDSee Photo Studio 7 for Mac(最好用的图像处理软件)
  9. 《赖氏经典英语语法》第三集
  10. linux流量监控分析工具,Linux网络流量监控与分析工具Ntopng
  11. 全网无损音乐免费下载!
  12. linux 如何加定时任务,linux系统添加定时任务
  13. 如何“延迟加载”嵌入式YouTube视频
  14. 快速数论变换与多项式常用运算
  15. 服务器之间的文件传输
  16. 先验后验与贝叶斯定理
  17. 新近开发了一款Android应用奶爸指南
  18. China-Final2016K Justice Rains From Above
  19. 基于ESP8266和51单片机的手机遥控小车
  20. 驾照科目一知识点——1、准驾车型

热门文章

  1. iPad游戏突然没有声音问题
  2. 自定义的毛玻璃效果,高斯模糊
  3. fastai 文本分类_使用Fastai v2和多标签文本分类器检查有毒评论
  4. Weakly Supervised Instance Segmentation using Class Peak Response
  5. 如何实现跨行跨地区转账实时到帐而且免手续费?
  6. 面试官:设计模式是什么?
  7. matlab 类似宏定义,比较全面的宏定义解析
  8. android 上层设置 自动调节亮度
  9. 关于微信小程序云开发---实现客服自动回复图片例子
  10. mt950报文解析_系列之五 | MT759报文升级内容解析