sequelize连接mysql_node.js通过Sequelize 连接MySQL

node.js通过Sequelize 连接MySQL

一.通过koa2脚手架构建项目

1.1 安装koa-generator

在终端输入:

$ npm install -g koa-generator1

1.2 使用koa-generator生成koa2项目

$ koa2 HelloKoa21

成功创建项目后,进入项目目录,并执行npm install命令

$ cd HelloKoa2

$ npm install1

2

1.3 启动项目

在终端输入:

$ npm start1

项目启动后,默认端口号是3000,在浏览器中运行可以得到下图的效果说明运行成功。

二.创建连接

2.1刚刚创建的文件使用webstorm打开

新建一个db目录

3f7b0f788a63fb4aa646e375281f3678.png

2.2查看Sequelize文档

使用npm安装Sequelize

npm install --save sequelize1

你还必须手动为所选数据库安装驱动程序选择一个方法之一:

# 选择以下之一:

$ npm install --save pg pg-hstore # Postgres

$ npm install --save mysql2

$ npm install --save mariadb

$ npm install --save sqlite3

$ npm install --save tedious # Microsoft SQL Server1

2

3

4

5

6

我这里下载得是MySQL2

2.3连接数据库

再刚刚创建得db文件加里面添加**config.js**

添加连接代码:

module.exports = { dbsMysql: 'mysql://root:123456@localhost:3306/new' //root是数据库管理员账号,‘123546’是密码 3306是端口号(MySQL默认是3306) school_admin是数据库名称

}1

2

3

4

5

6

继续在db文件夹里面添加mysql.js

添加连接以及添加日记:

const Sequelize = require('sequelize');

const mysqlurl = require('./config').dbsMysql

const sequelize = new Sequelize(mysqlurl, { // 选择一种日志记录参数 logging: console.log // 默认值,显示日志函数调用的第一个参数

});

// //每次启动server刷新数据库

// (async ()=>{

// await sequelize.sync({ force: true });

// })() module.exports = sequelize1

2

3

4

5

6

7

8

9

10

11

12

13

14

三.创建模型

3.1模型定义

在db目录下添加models文件夹再添加一个new2.js

定义模型:

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

const sequelize = require('../mysql');

const new2 = sequelize.define('t_new2', { name: { type: DataTypes.STRING, allowNull: false }, }, { // 这是其他模型参数 freezeTableName: true });

// 定义的模型是类本身

module.exports= new21

2

3

4

5

6

7

8

9

10

11

12

13

14

15

四.添加路由

4.1创建new2路由

在routes文件夹中添加new2.js

//引入kob得routes模块

const router = require('koa-router')()

//定义模型为刚刚创建得new2.js

let Model = require("../db/models/new2");

//正常来说启动端口为http://localhost:3000 添加/new2就可以进入new2路由

router.prefix('/new1')

// 进入new2路由以后可以打印this is a users response!

router.get('/', function (ctx, next) { ctx.body = 'this is a users response!'

})

//设置增加add接口

router.post('/add', async function (ctx, next) { console.log(ctx.request.body) const new2 = await Model.create(ctx.request.body); ctx.body = { code:200, data:new2 }

})

//设置查询find接口

router.post('/find', async function (ctx, next) { const new2 =await Model.findAll({include: []}) console.log(1111) ctx.body = { code: 200, data: new2 }

})

//设置通过id得到所需信息的get接口

router.post('/get', async function (ctx, next) { // let users = await User. // find({}) console.log(ctx.request.body) let new2 = await Model.findOne({ // attributes: ['name', 'where'] where: { id: ctx.request.body.id } }); ctx.body = { code:200, data:new2 }

})

//设置修改update接口

router.post('/update', async function (ctx, next) { console.log(ctx.request.body) // let pbj = await Model.update({ _id: ctx.request.body._id }, ctx.request.body); let new2 = await Model.update(ctx.request.body, { where: { id: ctx.request.body.id } }); ctx.body = new2

})

//设置删除delete接口

router.post('/delete', async function (ctx, next) { console.log(ctx.request.body) // 删除所有名为 "Jane" 的人 await Model.destroy({ where: { id: ctx.request.body.id } }); ctx.body = 'shibai '

})

// //每次启动server刷新数据库

// (async ()=>{

// await sequelize.sync({ force: true });

// })()

module.exports = router1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

4.2在app.js里面添加路由

143c49b860ec7a0d5a46fdb53d1d9844.png

bcdd00b4c6ce1b2734d0e8982265c136.png

//引入刚刚创建的new2路由

const new2 =require('./routes/new2')1

2

//使用我们的路由

app.use(new2.routes(),new2.allowedMethods())1

2

4.3启动项目

b457c436596cfe161a44110cd45ef5e3.png

在数据库中查看

94c81e4acd899fce14e4a24dff22c673.png

5.测试

5.1使用浏览器查看

输入url:http://localhost:3000/new2

9e367721c455e88871bae8259bb0937f.png

5.2.使用postman测试接口

测试find接口(因为我们写的find方法使用的post方法所以记得将get换成post):

http://localhost:3000/new2/find1

986789e80134bfdd14180bd96812ed41.png

测试get接口

94ae00471b865dc7a255f938ce9132d6.png

展示一下最后的目录

9b04a4c4f8a014a8696ffc8b84f70e29.png

文章来源: blog.csdn.net,作者:ky_xin,版权归原作者所有,如需转载,请联系作者。

原文链接:blog.csdn.net/weixin_44858959/article/details/111691928

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/346099.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

杀java_java怎么杀掉java进程

展开全部java中有调用外部程序的e69da5e887aa62616964757a686964616f31333337623431类,Runtime.getRuntime().exec("./**.exe");此函数返回的是一个Process 对象,该对象在创建后,可以对它进行 destroy () 杀掉子进程、 waitFor () …

高级java开发_我最喜欢的Java高级开发人员书籍

高级java开发我上一篇博客文章 (我对高级Java开发人员的十个最喜欢的在线资源)的想法,是由Xiaoran Wang发表的“面向高级Java开发人员的十大网站”的启发。 Wang还写了一篇名为“面向Java高级开发人员的十大书籍”的文章。 就像关于高级Java开…

Optional.isEmpty()在JDK 11 EA构建中可用

我最近发布的问题“ Optional.isEmpty()即将加入Java吗? ”是由名为“ RFR:8184693 :(选择)添加Optional.isEmpty ”的core-libs-dev邮件列表帖子提示的。 当前的JDK 11 Early Access构建 &…

camera.swf java_java调用摄像头保存图片上传功能

在项目中要用到jsp页面实现网页采集摄像头图像,并实现上传的功能,页面主要js调用的,所以可以使用多种语言php,asp等都可以使用,而且是跨浏览器的。可以整合的到SSH项目中和struts1或者struts2项目中使用方法1:下载 pri…

java list 字段去重_如何实现java8 list按照元素的某个字段去重

list 按照元素的某个字段去重DataAllArgsConstructorNoArgsConstructorpublic class Student {private Integer age;private String name;}测试数据List studentList Lists.newArrayList();studentList.add(new Student(28, "river"));studentList.add(new Student(…

cassandra使用心得_使用Cassandra和Nutch爬网

cassandra使用心得因此,您想从互联网上收集大量数据吗? 有什么比Cassandra更好的存储机制? 使用Nutch可以轻松做到这一点。 人们经常在Nutch后面使用Hbase。 这可行,但是如果您是(或想成为)Cassandra商店&…

java 北理工 教材_北理工《Java技术与应用》在线作业

北理工《Java技术与应用》在线作业可以代做所有奥鹏平台的作业、小论文、毕业论文、离线作业、考核作业、在线作业、在线测试,有需要的请联系本人一、单选题(共 20 道试题,共 40 分。)V1. Socket对象中____函数获取远程端口。A. getPort( )B. getLocalPo…

占用内存的Enum.values()方法

我是Java 枚举的忠实拥护者 。 似乎我们一直在等待获得它,但是当我们最终获得它( J2SE 5 )时,该枚举比C和C 提供的枚举要好得多,在我看来,这“ 值得等待” 。 与Java enum一样好,它也不是没有问…

Apache Spark Job的剖析

Apache Spark是通用的大规模数据处理框架。 了解spark如何执行作业对于获取大部分作业非常重要。 关于Spark评估范式的简短回顾:Spark使用的是惰性评估范式,在该范式中,Spark应用程序在驱动程序调用“ Action”之前不会执行任何操作。 惰性…

scala本地调试_如何编写自己的Java / Scala调试器

scala本地调试在本文中,我们将探讨Java / Scala调试器的编写和工作方式。 诸如Windows的WinDbg或Linux / Unix的gdb之类的本机调试器通过操作系统直接提供给它们的钩子来获取其功能,以监视和操纵外部进程的状态。 JVM充当OS之上的抽象层,它提…

java content()_Java contentEquals() 方法

全屏Java contentEquals() 方法contentEquals() 方法用于将将此字符串与指定的 StringBuffer 比较。语法public boolean contentEquals(StringBuffer sb)参数sb -- 要与字符串比较的 StringBuffer。返回值如字符串与指定 StringBuffer 表示相同的字符序列,则返回 tr…

java 加法 溢出_StackOverflow热帖:Java整数相加溢出怎么办?Java8一步搞定~

阅读本文大概需要 2 分钟。作者:Aaron_涛问题在之前刷题的时候遇见一个问题,需要解决int相加后怎么判断是否溢出,如果溢出就返回Integer.MAX_VALUE解决方案JDK8已经帮我们实现了Math下,不得不说这个方法是在StackOverflow找到了的…

通过这5个简单的技巧减少GC开销

编写代码的五种简单方法,可提高内存效率,而无需花费更多时间或降低代码可读性 垃圾回收会为您的应用程序增加多少开销? 您可能不知道确切的数字,但您确实知道总有改进的余地。 尽管自动GC是最有效的过程,但是如果它过…

xml 数字签名 破解_JAVA中带有数字签名的XML安全性

xml 数字签名 破解介绍 如您所知,XML在我们的产品或项目开发中起着重要作用,并且从XML文档中我们收集了很多信息,并且我们可以对XML文件执行CRUD操作。 但是,关于如何确保XML文件中可用的数据是真实的以及数据来自受信任的可靠来源…

centos 远程安装java程序_centos7远程服务器中redis的安装与java连接

1.下载安装redis在远程服务器中你想下载的位置执行以下命令来下载redis文件到服务器中$ wget http://download.redis.io/releases/redis-4.0.9.tar.gz说明:$是指你的当前目录,不是命令的一部分,wget命令用来下载网上资源,后面的地…

内部简单二进制编码(SBE)

SBE是用于金融行业的非常快速的序列化库,在本博客中,我将介绍一些使其快速发展的设计选择。 序列化的全部目的是对消息进行编码和解码,并且有很多可用的选项,从XML,JSON,Protobufer,Thrift&…

mingw64 下 java_在 Windows 10 64 位下安装 Mingw-w64

1、MinGW 的全称是:Minimalist GNU on Windows 。打开网址:http://www.mingw-w64.org/doku.php/download ,选择 MingW-W64-builds。如图1图12、下载包名:mingw-w64-install.exe。安装时报错:Cannot download repositor…

java实现layui分页_layui如何实现数据分页功能

我们先来看下官网的演示画面。具体代码:页面引入layui.css、 layui.js前台jsvar limitcount 10;var curnum 1;//列表查询方法function productsearch(productGroupId,start,limitsize) {layui.use([table,laypage,laydate], function(){var table layui.table,la…

java 正则表达式使用_如何用正则表达式杀死Java

java 正则表达式使用我们最近偶然发现了一个我们绝对不了解的现象:您可以使用简单的正则表达式杀死任何Java IDE以及任何Java进程… 回到大学后,我被告知正则表达式(称为正则语法或3型语法)总是以有限状态的自动机结束&#xff0…

java 合并到一行_mysql中将多行数据合并成一行数据

一个字段可能对应多条数据,用mysql实现将多行数据合并成一行数据例如:一个活动id(activeId)对应多个模块名(modelName),按照一般的sql语句:1 SELECT am.activeId,m.modelName2 FROM activemodel am3 JOIN model m4 ON am.modelId m.modelId5…