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. FiddLer模拟post不成功的解决办法

    开始用fiddler抓app包,后来想模拟一下post请求,发现一直接受不到,wtf? 默认的header是类似这样的 User-Agent: Fiddler Host: localhost Cont ...

  2. 安装busybox玩玩

    到http://www.busybox.net/downloads/binaries/下载放到sdcard然后adb shellsumount -o remount,rw -t yaffs2 /dev ...

  3. 13.git别名

    虽然别名不是很重要,但是你大概应该知道如何使用它们. Git 并不会在你输入部分命令时自动推断出你想要的命令. 如果不想每次都输入完整的 Git 命令,可以通过 git config 文件来轻松地为每 ...

  4. angular2 ng build --prod 报错:Module not found: Error: Can't resolve './$$_gendir/app/app.module.ngfactory'

    调试页面 ng serve 正常 ng build 也正常 ng build --prod 异常:Module not found: Error: Can't resolve './$$_gendir ...

  5. Python初学者第十天 集合、十六进制

    10day 数据类型:集合 set 1.集合的定义 集合:无序的.不重复的数据组合. 特性:a.去重,把一个列表变成集合,就自动去重了 b.关系测试.测试两组数据之间的交集.差集.并集等关系 2.集合 ...

  6. 用phpstudy搭建的lnmp环境下mysql授权远程连接

    1.使用phpstudy安装的mysql没有放置到可以直接调用的目录里,所以只能使用绝对路径来访问: /phpstudy/mysql/bin/mysql -uroot -proot 2.执行use m ...

  7. 邮件营销巧妙添加GIF让您的邮件动起来

    动态图片远比静态图片要吸引人,因此近年来,一些营销人员也开始越来越频繁的使用GIF动画图片,适当的穿插和点缀动态图片,能够生动形象的表达出 主题,并且时不时令读者忍俊不禁.尤其是做邮件营销的,如果能在 ...

  8. 代码注释模板(把内容保存为xml文件,导入eclipse中即可)

    <?xml version="1.0" encoding="UTF-8" standalone="no"?><templa ...

  9. C#利用NPOI处理excel的类 NPOIHelper.cs

    个人的NPOIHelp类,包括datatable导出到excel,dataset导出到excel,excel导入到datatable,excel导入到dataset, 更新excel中的数据,验证导入 ...

  10. react 开发中的问题简记

    1.什么时候用props 什么时候用state ? 不能使用props:当页面组件存在URL跳转问题时候,原因:若单独刷新,他会报错,拿不到前面的数据: 使用props场景:当组件为页面组件的一部分即 ...