Sequelize就是Node上的ORM框架 ,相当于java端的Hibernate

是一个基于 promise 的 Node.js ORM, 目前支持 Postgres, MySQL, SQLite 和 Microsoft SQL Server. 它具有强大的事务支持, 关联关系, 读取和复制等功能.

首先看一下在node上面使用原生mysql

npm install mysql --save

进入数据库 create database greet 创建数据库

/config/defaut

let config = {
port: 3000,
database: {
host: '127.0.0.1', //根据当前环境填写
port: 3306,
user: 'root',
password: '000000',
database: 'greet'
}
}
module.exports = config;

Schema/mysql.js

let mysql = require('mysql');
let config = require('../config/defaut'); //这是配置信息 let connection = mysql.createConnection({ //链接数据库
host: config.database.host,
port: config.database.port,
user: config.database.user,
password: config.database.password,
database: config.database.database
}) connection.connect(err => { //判断时候链接数据库
if (err) {
console.log("mysql is fail" + err);
return;
}
console.log("mysql is success!"); //数据库链接成功标志
}) let select = "select * from users"; //查看时候有user这个表
connection.query(select, (err, done) => {
if (done == undefined) { //创建之前进行判断 创建用户表
let createUser = `
create table if not exists users(
user_id INT NOT NULL AUTO_INCREMENT,
user_name VARCHAR(20) NOT NULL,
user_password VARCHAR(20) NOT NULL,
user_PhoneNumber VARCHAR(20) NOT NULL,
PRIMARY KEY(user_id)
)`
connection.query(createUser, (err, result) => { //创建数据库表
if (err) {
console.error("create is err" + err);
return;
}
console.log('create is success', result); //创建成功就返回创建的表
})
} else {
console.log("表已经存在,query代码不再加载");
}
}) module.exports = connection; let addusers = 'insert into users (user_id,user_name,user_password,user_PhoneNumber) values (?,?,?,?)';
let addusersSql = [, '张三', '000000', '11111111111'];
connection.query(addusers, addusersSql, (err, done) => {
if (err) {
console.log("[insert into is error]" + err.message);
return;
}
console.log("-------------------------insert-----------------------------");
console.log("Id to", done.insertId);
})

因为是原生的sql语句操作,显得很麻烦,Sequelize 就出现了

在数据库的表中,每一行都可以用一个JavaScript对象表示,这就是ORM(Object-Realtional Mapping)技术,把关系数据库的表结构映射到对象上

npm install sequelize --save

npm install mysql2 --save

因为 Sequelize 不能创建数据库,所以需要手动创建一个数据库:

create database greet

Schema/mysql.js

let config = require('../config/defaut');  //数据库配置
let Sequelize = require('sequelize');
// new Sequelize(database, [username=null], [password=null], [options={}])
// class Sequelize 接收 4 个参数,后三个参数是可选的 let sequelize = new Sequelize(config.database.database, config.database.user, config.database.password,{
host: config.database.host,
dialect: 'mysql',
pool: {
max: 3, //连接池最大链接数量
min: 1, //连接池最小链接数量
idle: 10000 //线程10秒内没有被操作就会释放线程
}
}) sequelize.authenticate() //连接测试
.then(()=> {
console.log("mysql is Success");
})
.catch (err=> {
console.log(err);
}) module.exports = sequelize;

下面我们创建表

let mysql = require('./mysql');  //Sequelize 的数据库配置
let Sequelize = require('sequelize'); let Users = mysql.define('user', {
user_name: { //创建表字段
type: Sequelize.STRING(100), //Sequelize.String类型 参数不清楚什么 貌似是字段长度 不写也行
//type: Sequelize.STRING,
field: 'user_name' // 指定存储在表中的键名称
// 没有指定 field,表中键名称则与对象键名相同,为 user_name
},
user_password: {
type: Sequelize.STRING(50)
},
user_PhoneNumber: {
type: Sequelize.STRING(50)
}
}, {
// 如果为 true 则表的名称和 model 相同,即 user
// 为 false MySQL 创建的表名称会是复数 users
// 如果指定的表名称本就是复数形式则不变
freezeTableName: false
}); // 创建表
// User.sync() 会创建表并且返回一个 Promise 对象
// 如果 force = true 则会把存在的表(如果 users 表已存在)先销毁再创建表
// 默认情况下 force = false
Users.sync({
force: false
}).then(() => {
console.log("[Users is success]");
})
//添加用户
Users.create({
user_name: "张三",
user_password: "000000",
user_PhoneNumber: "138138138138"
}) //查看用户
let lookUser = async () => {
//return await Users.findAll() //返回一个查询的promise对象
await Users.findAll().then(res => {
console.log(JSON.parse(JSON.stringify(res))) //查看数据库里面的全部字段
})
} module.exports = {
addUSers,
userlogin,
lookUser
}

在项目里面的具体引用请看我的github

node.js使用Sequelize 操作mysql的更多相关文章

  1. [转]Node.JS使用Sequelize操作MySQL

    Sequelize官方文档  https://sequelize.readthedocs.io/en/latest/ 本文转自:https://www.jianshu.com/p/797e10fe23 ...

  2. MySQL+Node.js连接和操作

    在本节中,您将学习如何使用mysql模块从node.js应用程序与MySQL进行交互. 我们将向您展示如何使用Node.js连接到MySQL,执行常用操作,如使用mysql模块API执行插入,选择,更 ...

  3. paip.最好的脚本语言node js 环境搭建连接mysql

    paip.最好的脚本语言node js 环境搭建连接mysql #====下载node...走十一个exe..容易的.. 1 #0----Hello world   .js 2 #---------模 ...

  4. Node.js数据库连接池操作通用工具(MySQL模块)

    出处:OSN开源站点数据库通用工具类,OSN源代码地址,https://github.com/obullxl/osnode-site,百度云演示站点,http://obullxl.duapp.com使 ...

  5. nodejs+sequelize操作mysql数据库

    前言: 本人对mysql不是很熟悉,只会命令行的简单增删改查.有些观点可能不到位请谅解. sequelize是针对node.js和io.js开发的基于ORM的框架,它支持的数据库包括:PostgreS ...

  6. nodejs使用sequelize操作mysql实例

    sequelize是node操作mysql的一款npm包,包含很多特性:数据库模型映射.事务处理.模型属性校验.关联映射等,花了两天时间学习了下基本的一些操作,特别是关联映射部分的操作,包含1:1.1 ...

  7. 2.MongoDB 基于node.js访问和操作集合

    对于频繁使用的Node.js来说,常见的任务是集合的动态操控. 较大的安装给每个大客户一个单独的集合,以便客户登入或离开时.根据需要添加或删除集合. MongoDB Node.js 驱动程序 Db和C ...

  8. 全栈项目|小书架|服务器开发-NodeJS 中使用 Sequelize 操作 MySQL数据库

    安装 官网:https://sequelize.org/v5/manual/getting-started.html 安装sequelize及数据库连接驱动 npm install --save se ...

  9. Node.js(七)MySql+ajax

    Api.js const express=require("express"); const router=express.Router(); const mysql = requ ...

随机推荐

  1. 深入理解mysql的底层实现

    MySQL 的常用引擎 1. InnoDB InnoDB 的存储文件有两个,后缀名分别是 .frm 和 .idb,其中 .frm 是表的定义文件,而 idb 是数据文件. InnoDB 中存在表锁和行 ...

  2. Tiled编辑器

    TiledMap编辑器生成的是*.tmx文件,此文件可以直接被cocos2dx使用(CCTMXTiledMap类).lua代码如下: local map = CCTMXTiledMap:create( ...

  3. linux下 signal信号机制的透彻分析与各种实例讲解

    转自:http://blog.sina.com.cn/s/blog_636a55070101vs2d.html 转自:http://blog.csdn.net/tiany524/article/det ...

  4. 查看dump oracle数据块查看

    alter system dump datafile 8 block 2523; Block dump from disk:buffer tsn: 87 rdba: 0x160dd924 (88/90 ...

  5. asp.net mvc 4.0常见的几个问题

    看书的时候遇到很多不知所云的错误,都是在网上找到的解决方法,没办法,从asp.net到mcv很多的新技术,没有一点思路,只能在网上搜罗了. 1.更新产品不成功 更新产品的时候一直不能更新成功,但是很奇 ...

  6. 关于tcp状态及一些延展

    1.常用的三个状态是:ESTABLISHED 表示正在通信,TIME_WAIT 表示主动关闭,CLOSE_WAIT 表示被动关闭. TCP协议规定,对于已经建立的连接,网络双方要进行四次握手才能成功断 ...

  7. Dell R720上的系统安装问题的解决办法(关于RAID建立磁盘阵列的技术)

    摘要:本篇是本人在搭建大数量存储.搜索环境时,对于使用Dell PowerEdge R720 and R720xd作为服务器所遇到的一些问题进行的总结. 开始时,我们使用Dell提供的安装光盘(蓝色) ...

  8. 大数因式分解 Pollard_rho 算法详解

    给你一个大数n,将它分解它的质因子的乘积的形式. 首先需要了解Miller_rabin判断一个数是否是素数 大数分解最简单的思想也是试除法,这里就不再展示代码了,就是从2到sqrt(n),一个一个的试 ...

  9. LeNet 分类 FashionMNIST

    import mxnet as mx from mxnet import autograd, gluon, init, nd from mxnet.gluon import loss as gloss ...

  10. ssm框架基本流程

    题目,写的有点大了,其实就是 对一张表的基本处理,增删改查的基本操作演示. 好了,我们开始了. 假如,我们在做一个单表处理,就举例是 学院(某个大学的学院) 吧. 首先,我们分析 学校这样表有哪些属性 ...