Node.js 小白入门课3-设置基本数据库

Node.js 小白入门课3-设置基本数据库

Sequelize(框架,数据库包文件,简化数据库编写)是一个基于 promise 的 Node.js ORM, 目前支持 Postgres, MySQL, SQLite 和 Microsoft SQL Server. 它具有强大的事务支持, 关联关系, 读取和复制等功能.
 
  1.配置数据库

yarn add sequelize@^5.8.7 --save   #安装数据库依赖包
yarn add mysql2 --save          #安装mysql2数据库
sequelize init                  #初始化,会创建对应项目的模型、迁移、种子文件等

如果 windows 电脑遇到 sequelize 不是内部命令,请执行下面的命令

yarn add sequelize-cli sequelize
npx sequelize init

就出现了

在这里插入图片描述

多了以下4个文件夹

在这里插入图片描述

2、后端创建模型:

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

在这里插入图片描述

添加了一个名为"Article"的表格,里面除了自带的模片外,还增加title:string,content:text

3、在config/config.json文件中,修改数据库配置。

# "development": {                #开发情况下
   "username": "root",                  
   "password": null,             #苹果系统下改为跟用户名一样“root”,window系统可以设为空""        
   "database": "database_development",   #把名字改为blog_development
   "host": "127.0.0.1",
   "dialect": "mysql"

4.打开Navicat,手动在你的数据库管理软件中创建你的本地数据库,名字叫 blog_development

在这里插入图片描述

建一个名为blog_development的数据库

5、执行数据库迁移:npx sequelize db:migrate
在这里插入图片描述

在blog_development里面增加一个叫“article”的表格
(也可以增加多个)

6、创建种子文件: npx sequelize seed:generate --name demo-article

7、更改种子文件数据后,运行种子文件:npx sequelize db:seed:all

up: async (queryInterface, Sequelize) => {
    return queryInterface.bulkInsert('Articles', [
      {
        title: '今天天气真好',
        content: '天气预报说虽然今天是晴天,可是明天会下雨。',
        createdAt: new Date(),      #当前的时间
        updatedAt: new Date()
      },
      {
        title: '武汉什么早餐最好吃?',
        content: '毫无疑问是三鲜豆皮 + 热干面 + 米酒',
        createdAt: new Date(),
        updatedAt: new Date()
      },
    ]);
    },

注:查看数据库,你会发现新插入的数据时间有问题,当服务器不在东八区时,处理时区问题有时可能比较烦, 特别是当客户端是北京时间,跟服务器有时差,这时需要做如下处理:

在config/config.json文件中添加如下代码:

"timezone": "+08:00"

如图所示:

在这里插入图片描述

备注:6.7两步其实可以不用种子文件后端操作,可以在匹配的数据库里自行添加

在这里插入图片描述

8、启动项目:yarn start 。查看代码你会发现,这时,我们已经创建了一个单独的模块 articles。

在views文件夹下的,app.js文件中注册路由,如下:
在这里插入图片描述

9、在routes文件夹下手动添加article.js文件,并对其做以下编辑

var express = require('express');
var router = express.Router();
var models = require('../models');

//查询文章,以列表形式显示
router.get('/', function (req, res, next) {             //访问路首页接口地址,得到以下目的
    models.Article.findAll({limit:2,order: [['id', 'DESC']]})   // 查询Article的所有数据的两条记录,以倒序(desc)的方式
        .then(jieguo  => { res.json({abc: jieguo});     //然后查到的结果(变量赋值abc)通过res.json导出,在http://localhost:3000/abc里面查看
    })
});

//查询单个文章详情
router.get('/:id', function (req, res, next) {
    let id = req.params.id;
    models.Article.findByPk(id).then(article => {
        res.json({article: article})
    })
});

// 新增单个文章
router.post('/', function (req, res, next) {
    //res.json(req.body)
    models.Article.create(req.body).then((article) => {
        res.json({article: article})
    });
});

// 编辑单个文章
router.put('/:id', function (req, res, next) {
    models.Article.findByPk(req.params.id).then(article => {
        article.update(req.body);
        res.json({article: article})
    })
});

// 删除单个文章
router.delete('/:id', function (req, res, next) {
    models.Article.findByPk(req.params.id).then(article => {
        article.destroy();
    })
});

module.exports = router;

编辑成功后,浏览器访问:http://localhost:3000/articles,你会发现,我要查的数据已被查出:
在这里插入图片描述

通过后台测试软件Postman对做的命令执行测试
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值