Node.js

express+sequelize

2019-06-29  本文已影响0人  JackeeM

express+sequelize写后台

官方示例

先看一个(大约3年前的.....)官网的例子

我们愉快的发现他是用 express-cli 创建的项目,所以我机智的创建了一个express-demo看看两者之间的差异

(1)多了4个目录分别是,分析一下

(2)在routes文件中主要使用到modal文件的

看完代码是不是感觉特别的简单?

上手试试

就写一个 (1)班级-(n)老师-(n)学生 的例子玩玩

1. 使用express-cli创建项目
express myapp
2. 导入sequelize sequelize-cli mysql2
cnpm i -S sequelize sequelize-cli mysql2 cross-env
3. 删除不必要的视图引擎,并修改route逻辑
/* GET home page. */
router.get('/', function(req, res, next) {
  res.json({ title: 'Express' });
});

试一下 http://localhost:3000/

4. 推荐中间件
5.使用sequelize-cli建表和模型

(1)新建 .sequelizerc文件

(2)输入内容

```
const path = require('path');
module.exports = {
  'config': path.resolve('config', 'database.json'),
  'models-path': path.resolve('db', 'models'),
  'seeders-path': path.resolve('db', 'seeders'),
  'migrations-path': path.resolve('db', 'migrations')
}
```

(3)初始化创建db环境

./node_modules/.bin/sequelize init

会生成db目录,和config目录,修改config文件下的数据库配置为自己的数据库配置。
(4)创建数据库

./node_modules/.bin/sequelize db:create

(5)创建表和模型

我们需要一个班级表,老师表,学生表

通过sequelize-cli的指令创建模型

./node_modules/.bin/sequelize model:generate --name Class --attributes name:string

./node_modules/.bin/sequelize model:generate --name Teacher --attributes subjectId:INTEGER,name:string,avator:string,sex:INTEGER,age:INTEGER,mobile:string

./node_modules/.bin/sequelize model:generate --name ClassTeacher --attributes teacherId:INTEGER,classId:INTEGER

./node_modules/.bin/sequelize model:generate --name Student --attributes classId:INTEGER,name:string,sex:INTEGER,age:INTEGER,email:string

./node_modules/.bin/sequelize model:generate --name Subject --attributes name:string

再运行
./node_modules/.bin/sequelize db:migrate 表就建好了

image.png

(6)造一点种子数据

在接口中操作数据

一个例子

var express = require('express');
var router = express.Router();
var models  = require('../db/models');
const Sequelize = require('sequelize');
const Op = Sequelize.Op

/* 获取学生信息 */
router.get('/', function(req, res, next) {
  const { classId,className,name } = req.query;
  console.log('className',className)
  let whereObj = {}
  if(classId) whereObj.classId = classId
  if(name) whereObj.name = {
    [Op.like]: `%${name}%`,
  }

  models.Student.findAll({
    where: whereObj,
    attributes: {exclude:['createdAt', 'updatedAt']},
  }).then(function(data) {
    res.json(data)
  });
});

```·
上一篇下一篇

猜你喜欢

热点阅读