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开…

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

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

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

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

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…

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

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

内部简单二进制编码(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 合并到一行_mysql中将多行数据合并成一行数据

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

容器化Spring Data Cassandra应用程序

我正在继续学习Docker的旅程。 在这一点上,我仍然保持简单。 这次,我将解决将Spring和Cassandra应用程序转换为使用容器而不是在主机上本地运行的问题。 更准确地说,使用Spring Data Cassandra整理应用程序。 我希望我前几天看过进行此更改。…

使用React和Spring Boot构建一个简单的CRUD应用

“我喜欢编写身份验证和授权代码。” 〜从来没有Java开发人员。 厌倦了一次又一次地建立相同的登录屏幕? 尝试使用Okta API进行托管身份验证,授权和多因素身份验证。 React的设计使创建交互式UI变得轻松自如。 它的状态管理非常有效,并且仅在…

使用CUBA进行开发–是Spring的重大转变吗?

阅读另一个供内部公司使用的Web项目的要求时,您(至少是我自己)通常会看到一个很普通的集合:定义明确的数据存储结构(或有时是现有的旧式DB),大量的数据输入形式,非常复杂的业务逻辑&…

java 伴随矩阵_C#计算矩阵的逆矩阵方法实例分析

本文实例讲述了C#计算矩阵的逆矩阵方法。分享给大家供大家参考。具体如下:1.代码思路1)对矩阵进行合法性检查:矩阵必须为方阵2)计算矩阵行列式的值(Determinant函数)3)只有满秩矩阵才有逆矩阵,因此如果行列式的值为0(在代码中以绝对值小于1E-…

java 代码造假_老板居然让我在Java项目中“造假”

1. 前言老板说,明天甲方要来看产品,你得造点数据,而且数据必须是“真”的,演示效果要好看一些,这样他才会买我们的产品,我好明年给你换个嫂子。一般开发接到这种过分要求都不会很乐意去做,这完全…

nginx php环境搭建_php+nginx环境配置

本篇文章的内容是PHP和nginx环境的配置,在这里分享给大家,也给有需要的朋友一个参考phpnginx环境配置1、首先需要准备的应用程序包。nginx:nginx/Windows-1.0.4php:php-5.2.16-nts-Win32-VC6-x86.zip (nginx下php是以FastCGI的方式…

javaone_旅行报告:JavaOne 2013 –重归荣耀

javaone我已经回来几天了,需要赶上过去几天一直搁置的所有事情。 对我来说,这是一年中最忙的时间。 JavaOne和OpenWorld在旧金山的整整一周。 一个非常简短的旅行报告。 年度ACED简报 你们中许多人都知道我是Oracle社区认可计划(称为“ ACE计…

php如何禁用浏览器的缓存,php如何禁止浏览器使用缓存页面

【摘要】PHP即“超文本预处理器”,是一种通用开源脚本语言。PHP是在服务器端执行的脚本语言,与C语言类似,是常用的网站编程语言。PHP独特的语法混合了C、Java、Perl以及 PHP 自创的语法。下面是php如何禁止浏览器使用缓存页面,让我…