nodejs使用Sequelize框架操作数据库的实现


Posted in NodeJs onOctober 21, 2020

sequelize.define

使用该方法可以定义model,例子如下:

const Sequelize = require('sequelize');

var sequelize = new Sequelize(config.database, config.username, config.password, {
 host: config.host,
 dialect: 'mysql',
 pool: {
  max: 5,
  min: 0,
  idle: 30000
 }
});

var Website = sequelize.define('website', {
 id: {
  type: Sequelize.BIGINT,
  primaryKey: true,
  autoIncrement: true
 },
 url: Sequelize.STRING(255),
 title: Sequelize.STRING(255),
 status: Sequelize.INTEGER,
 delete_mark: Sequelize.BOOLEAN
}, {
 timestamps: false
});

该方法传入的第一个参数是数据表的单数形式,怎么理解呢?例如这里传入的是website其实是模型名,数据表默认是websites这样的复数形式,这种约定我在Laravel中也碰见过,

也就是常说的,约定大于定义,也就是说,如果我们都按照约定的规范去开发,那么效率其实比重新定义,要高很多。

那么,定义好了模型,该怎么进行使用呢?

(async () => {
 let demo = await Website.create({
  url:'http://www.xxxx.com/',
  title:'demo'
 });
 console.log(demo);
})();

继承Model

const {Sequelize, DataTypes, Model} = require('sequelize');
const config = require('../config');

const sequelize = new Sequelize(config.database, config.username, config.password, {
 host: config.host,
 dialect: 'mysql',
 pool: {
  max: 5,
  min: 0,
  idle: 30000
 }
});

/**
 * @author chaojilaji
 * 数据表websites的关系对象映射
 */
class WebSite extends Model {

}

WebSite.init({
 id: {
  type: Sequelize.BIGINT,
  primaryKey: true,
  autoIncrement: true
 },
 url: Sequelize.STRING(255),
 title: Sequelize.STRING(255),
 status: Sequelize.INTEGER,
 delete_mark: Sequelize.BOOLEAN
}, {
 sequelize,
 modelName: 'Website',
 timestamps:false
});

(async () => {
 await sequelize.sync();
 let x = await WebSite.create({
  url: 'http://www.xxxxxxxx.com/',
  title: 'demo2'
 });
 console.log(x);
})();

module.exports = WebSite;

我比较推荐使用继承Model这种方式,通过创建一个class,这样可以使用model.exports=模块名的方式,将该模型封装起来。供别的地方使用,只需要require进去即可。

具体如何对数据表进行操作,就比较简单了,只需要参考API即可。 sequelize文档地址

到此这篇关于nodejs使用Sequelize框架操作数据库的实现的文章就介绍到这了,更多相关nodejs Sequelize操作数据库内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

NodeJs 相关文章推荐
nodejs 后缀名判断限制代码
Mar 31 NodeJs
nodejs npm install全局安装和本地安装的区别
Jun 05 NodeJs
基于NodeJS的前后端分离的思考与实践(五)多终端适配
Sep 26 NodeJs
Nodejs中读取中文文件编码问题、发送邮件和定时任务实例
Jan 01 NodeJs
Nodejs获取网络数据并生成Excel表格
Mar 31 NodeJs
nodejs中全局变量的实例解析
Mar 07 NodeJs
NodeJS创建最简单的HTTP服务器
May 15 NodeJs
详解nodejs实现本地上传图片并预览功能(express4.0+)
Jun 28 NodeJs
详解nodeJs文件系统(fs)与流(stream)
Jan 24 NodeJs
NodeJS 实现多语言的示例代码
Sep 11 NodeJs
nodejs使用node-xlsx生成excel的方法示例
Aug 22 NodeJs
详解nodejs内置模块
May 06 NodeJs
用Nodejs实现在终端中炒股的实现
Oct 18 #NodeJs
Nodejs在局域网配置https访问的实现方法
Oct 17 #NodeJs
NodeJS开发人员常见五个错误理解
Oct 14 #NodeJs
浅谈vue websocket nodeJS 进行实时通信踩到的坑
Sep 22 #NodeJs
基于NodeJS开发钉钉回调接口实现AES-CBC加解密
Aug 20 #NodeJs
浅谈使用nodejs搭建web服务器的过程
Jul 20 #NodeJs
通过实例了解Nodejs模块系统及require机制
Jul 16 #NodeJs
You might like
PHP实现简单的新闻发布系统实例
2015/07/28 PHP
PHP读取PPT文件的方法
2015/12/10 PHP
JQuery与Ajax常用代码实现对比
2009/10/03 Javascript
uploadify 3.0 详细使用说明
2012/06/18 Javascript
JQuery分别取得每行最后一列和最后一行的示例代码
2013/08/18 Javascript
jquery ajax,ashx,json的用法总结
2014/02/12 Javascript
JS控制表单提交的方法
2015/07/09 Javascript
javascript结合Flexbox简单实现滑动拼图游戏
2016/02/18 Javascript
微信小程序 表单Form实例详解(附源码)
2016/12/22 Javascript
easyUI combobox实现联动效果
2017/01/17 Javascript
JS和canvas实现俄罗斯方块
2017/03/14 Javascript
微信小程序按钮点击跳转页面详解
2019/05/06 Javascript
微信小程序自定义弹窗实现详解(可通用)
2019/07/04 Javascript
关于NodeJS中的循环引用详解
2019/07/23 NodeJs
layui 实现加载动画以及非真实加载进度的方法
2019/09/23 Javascript
[04:48]DOTA2亚洲邀请赛林书豪为VGJ加油
2017/04/01 DOTA
[00:12]DAC SOLO赛卫冕冠军 VG.Paparazi灬展现SOLO技巧
2018/04/06 DOTA
Python中关键字nonlocal和global的声明与解析
2017/03/12 Python
Python如何读写字节数据
2020/08/05 Python
CSS3 transform的skew属性值图文详解
2014/07/21 HTML / CSS
Tessabit美国:集世界奢侈品和设计师品牌的意大利精品买手店
2020/06/29 全球购物
应届生高等护理求职信
2013/10/12 职场文书
电气专业推荐信范文
2013/11/18 职场文书
行政文秘岗位职责范本
2014/02/10 职场文书
求职意向书范文
2014/04/01 职场文书
计生专干事迹
2014/05/28 职场文书
运动员获奖感言
2014/08/15 职场文书
我的大学四年规划书范文2014
2014/09/26 职场文书
党的群众路线剖析材料
2014/10/09 职场文书
行政执法队伍作风整顿个人剖析材料
2014/10/11 职场文书
个人党性分析材料
2014/12/19 职场文书
四年级学生期末评语
2014/12/26 职场文书
2015年党员创先争优公开承诺书
2015/04/27 职场文书
2015年度个人教学工作总结
2015/05/20 职场文书
2016入党积极分子考察评语
2015/12/01 职场文书
详解PHP设计模式之依赖注入模式
2021/05/25 PHP