新增数据 / 初始化
const adminModel = require("./model/adminModel")
// 新增方法1 build + save
// 同步方法 创建一个实例
const instance = adminModel.build({
loginId: '123',
loginPwd: '123'
});
instance.loginId = 'asd';
instance.save() // 某一个数据实例在 save 之后才可以保存 返回一个 Promise
// 在数据库中查找(获取)一条数据,也是指获取一个数据实例,这个数据实例上有若干方法,比如save
// instance.toJSON() // 会将实例转为一个 json 对象
// 新增方法2 create
adminModel.create({
loginId: 'admin',
name: '超级管理员',
})
项目实践(以添加文章为例):
省略业务细节,重点学习业务架构
app.js
const express = require('express');
const blogRouter = require('./routes/blog');
const app = express();
app.use('/api/blog', blogRouter);
blog.js
const router = express.Router();
// 添加文章
router.post('/', async function (req, res, next) {
// console.log(req.body)
res.send(await addBlogService(req.body))
})
blogService.js
// 添加文章
module.exports.addBlogService = async (newBlogInfo) => {
// ...
const data = await addBlogDao(newBlogInfo);
return formatResponse(0, '', data);
}
blogDao.js
// 添加文章
module.exports.addBlogDao = async function (newBlogInfo) {
// ...
const result = await blogModel.create(newBlogInfo);
return result.dataValues
}
blogModel.js
const {DataTypes} = require("sequelize")
const sequelize = require("../dbConnect")
// 定义数据表
module.exports = sequelize.define("blog", {
// id 自动生成 无需手动定义
title: {
type: DataTypes.STRING,
allowNull: false,
},
description: {
type: DataTypes.TEXT,
allowNull: false,
},
// ...
}, {
freezeTableName: true, // 禁止默认的自动复数化
createdAt: false, // 关闭默认字段
updatedAt: false // 关闭默认字段
})
删除数据
// 删除文章
// 方法一:
module.exports.deleteBlogDao = async function (id) {
return await blogModel.destroy({
where: {
id
}
})
}
// 方法二:
const instance = await blogModel.findByPk(id);
await instance.destroy();
修改数据
// 修改文章
// 方法一:
module.exports.updateBlogDao = async function (id, newBlogInfo) {
await blogModel.update(newBlogInfo, {
where: {
id
}
})
return await blogModel.findByPk(id)
}
// 方法二:
const instance = await blogModel.finByPk(id);
instance.title = newBlogInfo.title;
instance.save()