在事件驱动的模型当中,每一个IO工作被添加到事件队列中,线程循环地处理队列上的工作任务,当执行过程中遇到来堵塞(读取文件、查询数据库)时,线程不会停下来等待结果,而是留下一个处理结果的回调函数,转而继续执行队列中的下一个任务...Debug不方便,错误没有stack trace nodejs中的库方法是异步的,异步方法是约定。...由于新版的nodejs已经集成了npm,所以之前npm也一并安装好了。同样可以通过输入 "npm -v" 来测试是否成功安装。...在浏览器 JavaScript 中,通常 window 是全局对象, 而 Node.js 中的全局对象是 global,所有全局变量(除了 global 本身以外)都是 global 对象的属性。...大多数 web 服务器都支持服务端的脚本语言(php、python、ruby)等,并通过脚本语言从数据库获取数据,将结果返回给客户端浏览器。
用到的模块 mysql http fs cheerio 其中fs 系统自带,不必安装。...其余需要运行以下代码安装: npm install -S mysql http cheerio 运行结果 代码 const http = require('http'); // 导入http模块 const...database: 'nodejs' // 数据库名称 }); connection.connect(); // 连接数据库 console.log('========连接Mysql成功==...建立数据库 因为这是一个期末node.js的简单作业,老师要求是保存到数据库中,万幸是Mysql,不是该死的Sql Server。...所以我们需要创建一个数据库,并创建一张表: CREATE DATABASE nodejs; CREATE TABLE `nodejs`.
我选择了felixge/node-mysql,用的人比较多,先随大溜看看它的使用,暂时没有太过纠结于各库之间的执行性能问题,对其它库有研究的筒子也可以分享一下性能要求较高时的选择^_^! ... Error: Cannot find module 'mysql' 测试MySQL MySQL版本:5.5 在官方示例的基础下修改一下并测试: 测试示例源码 var mysql = require...有受影响的行数和插入数据的ID,就可以很方便进行后续的一些操作(比如判断是否成功或者继续根据插入数据的ID进行其它操作) 下面,我去数据库服务器中使用Navicate for MySQL工具查询一下...Nodejs 调用带out参数的存储过程,并得到out参数返回值 Nodejs调用存储过程没什么特别,只是调用带out参数存储过程并得到out参数返回值可能有些人比较疑惑,下面用个示例来介绍一下 ...out参数的值,细心的可能会发现我存储过程中在SET ExtReturnVal = 1表示成功后,多了一句SELECT ExtReturnVal; 这样就可以通地查询得到out参数的值了!
前段时间写Node.js执行mysql的时候踩了个大坑,大概就是nodejs请求Mysql数据表中的数据,返回以后,如果匹配正确就向另一个数据表中写数据。...请求是异步请求,执行的时候控制台输出’2’会比mysql请求后输出‘1’提前执行,控制台会先输出2再输出1。...这里我想到是用Promise重新将接口进行包装,使得可以使用async/await进行调用,符合同步的编码习惯 1.promise封装接口 Promise 通常被定义为最终会变为可用值的代理。...这项技术能够使用经典的 JavaScript 函数来接受回调并使其返回 promise: const fs = require('fs') const getFile = (fileName) =>...或被拒绝(在 catch 调用中)时执行的函数。
NodeJS下引用mysql进行增删查改 NodeJS下要使用mySql需要安装mysql依赖,输入命令行:npm install mysql --save NodeJS中连接mysql数据库的简单方法我所知道的有...与php中链接数据库的参数相同。属性列表如下: host: 连接数据库所在的主机名. (默认: localhost) port: 连接端口....bigNumberStrings: 启用 supportBigNumbers和bigNumberStrings 并强制这些数字以字符串的方式返回(默认: false)....debug=true&charset=BIG5_CHINESE_CI&timezone=-0700'); 这里我着重说下创建连接池 createPool(Object)连接数据库的方法: 开发中我们通常喜欢把连接数据库需要的属性写到一个配置文件里...){}) 5.通过回调得到的connection执行sql语句: connection.query(sql,function(conErr,result,fields){})
nodejs是一个运行在服务器端的JavaScript框架,既然是在服务器端运行,就少不了需要操作数据库。在nodejs中提供了一个基本的mysql模块,同时本示例也采用mysql作为例子。...首先要做的就是安装mysql模块 npm install mysql -S 然后就是先创建一个数据库,名字暂时起为:nodejs,然后在里面新建一张表,表名为user,表结构如下图所示 ?...database: config.mysqlDatabase, port: config.mysqlPort, charset:"UTF8MB4_GENERAL_CI" }); 我这里的配置信息写在了一个配置文件里...,用于查询使用,因为查询基本上不涉及到数据库事务,所以不存在数据回滚的现象,我们再来看一下基本的使用情况。...具体的sql语句写法可以自己学习数据库相关的知识。之后我们说一下nodejs中事务的用法。
前言 我的天呐,上了一个上午的课,下午呆呆地在图书馆用python玩并发,晚上就玩玩NodeJS,其实是这样的,O(∩_∩)O哈哈~听说14周NodeJS要结课了,我今天就琢磨琢磨了一下NodeJS的开发框架以及熟悉了...对express框架稍微扩展之后呢,okay之后,我感觉回到了之前写PHP的small-frame似的,结构目录看起来的感觉很熟悉,NodeJS与PHP果然是两兄弟。...额额,主要是熟悉Express框架,好了,具体我要回忆我的晚上做了什么喽。...,那就得来安装nodeJS的MySQL驱动,通过npm安装,在Express框架中呢,很简单,只要在package.json文件中声明一下项目的依赖即可!...执行的结果自定义返回JSON结果 */ function responseDoReturn(res, result,resultJSON) { if(typeof result === 'undefined
2019-07-26 14:10:24 nodejs要想操作mysql需要安装第三方库--mysql,有了这个模块,操作mysql数据库就变得很容易了。...result // 结果 }) // 销毁连接 | 由于 JS 是异步的,所以当前代码会在执行 SQL 之前就销毁了连接 connection.destroy() 如果每次连接数据库都这样写一下会很麻烦...,所以一般情况下我们会将其封装起来,作为一个模块儿,供其他的模块调用。...上面的代码示例如果封装起来供其他模块儿调用,会产生一个很大的问题,那就是连接一段时间之后,会与mysql断开连接,造成无法访问数据库的情况,如果重新启动服务,则又可以正常使用了,提示的错误为:nodejs...推荐使用连接池方式 用 createConnection 创建 Mysql 连接,每执行一次 connection.query 都是一个全新的连接,会造成一个资源的极大浪费,降低性能,如果操作不当还会造成连接中断的情况
在上篇文章 【使用NodeJS+Express开发服务端】我们已经学习了NodeJS+Express基本用法,你可能会记得我们的API接口返回的数据是假数 据并没有关联数据查询。...在本篇文章中我们将实现基本的数据交互并实现简单 的增删改查。...uid INT(11) 用户id userName VARCHAR(25) 用户姓名 Mysql的准备到此就准备完成,接下来是我们本篇教程的重点,怎样使用NodeJS+Express链接Mysql 3...安装MySQL模块 打开我们刚刚创建的 MysqlDemo 工程 这里我推荐使用WebStorm 或者 HBuilder 作为演示我们使用 WebStorm 打开工程 首先我们打开 package.json...port: 3306 } }; 完成后工程目前的结构如下 4 添加API接口调用SQL语句 紧接着我们继续在 db目录中添加 usersql.js 并键入如下内容 /**
在Nodejs中,lowdb模块[1]便是被用于文件数据库的封装库,它的规范就是我们熟知的json规范,使用它无需安装其他软件,仅需要我们有nodejs环境即可。.../db # 下存放我的db文件,那我的文件路径就是 ~/Desktop/Practice-book/nodejs/db/mongodb/db docker run -p 27017:27017 -v...重复执行了几次node app后,看看上面代码的执行结果。 ?...在这里的所演示的关系型数据库采用最常用的mysql,来看看Nodejs是如何操作关系型数据库mysql的。 1....结果展示 a. 开关接口设置数据库为mysql ? ? b. 开关接口设置数据库为mongo ? ?
在Nodejs中,lowdb模块[1]便是被用于文件数据库的封装库,它的规范就是我们熟知的json规范,使用它无需安装其他软件,仅需要我们有nodejs环境即可。.../db # 下存放我的db文件,那我的文件路径就是 ~/Desktop/Practice-book/nodejs/db/mongodb/db docker run -p 27017:27017 -v...重复执行了几次node app后,看看上面代码的执行结果。...在这里的所演示的关系型数据库采用最常用的mysql,来看看Nodejs是如何操作关系型数据库mysql的。 1....结果展示 a. 开关接口设置数据库为mysql b.
,对前面学到的一些知道做一个串联加深并灵活运用! ..." : "latest" } } 主要是标红部分(mysql如果是在这篇文章 http://www.cnblogs.com/zhongweiv/p/nodejs_mysql.html 中按照我的步骤安装过了的...注册成功后提示与检查数据库中插入数据! ? ? 到这里,注册功能完成(比如判断用户名是否已存在等情况显示就不列举了,自已写出来运行再看!)...首页 首页主要为了测试登录注册的功能是否可可用,虽然首页基本没什么功能,但是我还是把它头部放到了header.ejs文件中!...3.像header.ejs一样的提取页面公共部分怎么才能做得更好 ... 提示: 1.上面示例中我提到了“自动登录”,而我写的是“记录密码”,大家就当自动登录来用吧^_^!
当无法用javascript数字对象(JavaScript Number objects)所表达的时候就会返回的是一个big number字符串对象(值的范围要在 [-253, +253]之间).否则将会返回一个...它们都是被缓存起来当SQL执行完之后一并把结果返回过来。假如你有在大型的案例中应用到了MySQL的流技术。我很想能够与您分享。...例如,把查询结果通过piping导入到另一个流中(最大缓存为5)的简单例子: connection.query('SELECT * FROM posts') .stream({highWaterMark...储存过程 你可以在你的查询语句里面调用MySQL驱动中自带的任何存储过程,如果你使用存储过程生成的多个结果集,其实也就与您使用多语句查询生成得出的结果是一样的。...('USE name_of_db_that_does_not_exist'); 注意:error在Node中是一个特殊的对象,如果它没有被挂在一个事件上而是单独出现,那么就很有可能出现堆栈错误并且关闭NodeJS
前段时间做了一个 nodejs 应用,项目架构是 前端 vue 单页应用,后端 nodejs 其实有考虑 ssr,但是因开发时间比较紧张,就没能使用。 下面是开发过程中的一些经验以及遇到的一些问题。...请求 —— koa-favicon 4.接口请求 —— koa-router NODEJS 请求过程 koa 中间件、node端路由 中间件:中间件在请求和响应的过程中给我们一个修改数据的机会 中间件的功能包括...影响范围极大,为了更好的管理错误,我们最好能做到统一出口、入口,以便能够对错误进行更好的监控,以及异常处理。 可以借助于中间件来完成。...但是,对于复杂的情形,我们也会有需要用到断点调试的时候。 使用 vscode开发,并启动nodejs服务,可以很方便的进行断点 debug。...方法二:使用connection.query()的查询参数占位符 使用”?”作为查询参数占位符。
其实主要是对一些敏感接口(比如后台维护类的)做一个权限校验。 权限控制这块,我设计得还是比较简单粗暴的,因为我在数据库表中目前只预留了一个用户Tusi,关联的角色也是唯一用到的admin。...BaseController 统一获取 mysql pool 的 connection 对象,并挂载到 req 对象上,供后面的业务使用。...业务 Controller 与 mysql 交互时,只需要从 req 对象中取得 connection,通过 connection.query 去执行 sql 语句。...所以,在本项目[6]中,我只给出了example示例,大家按照说明给出自己的配置文件即可。...有了这次全栈开发的经验,大大提高了我对前后端全链路的理解程度,这之后和后端开发们聊天也更有话题可聊了,有时候还能帮后端捋捋思路、一起排查下问题。总之非常奈斯!
先定义用户实体和相应的接口,不做细节实现,访问相应的接口能返回相应的预期 定义一个全局变量(或者写进一个文件)去模仿数据库操作,返回相应的结果 结合数据库去实现细节,访问相应的接口能返回相应的预期 全局变量...graphqlHTTP用来将相应的实现以中间件的形式注入到express中。...,我这边对所有字段和方法增加了相应的注释(GraphQL就是好, 接口即文档),然后封装了mysql数据库的操作方法,引入后去实现相关的接口。...MYSQL增删改查的封装 这里简单点,我们期望是传入一条SQL和相应的参数,返回相应的执行结果。...额,这里的服务器我就不避讳打星号了,快到期了,有需要的同学可以连上去测试下,这里用的也是测试服务器和账号哈哈哈,没关系的。
要么全部不执行) 一致性(事务应该确保数据库状态从一个一致状态转变为另一个一致状态) 隔离性(多个事务并发执行时,一个事务执行不影响其他事务执行) 持久性(事务提交后,对数据库修改应该永久保存在数据库中...在 A 事务的两次读取之间,由于 B 事务的修改,A 事务两次读到的数据可能是不一样的。 幻读(Phantom Read):A 事务对一个表中的数据进行了修改,这种修改涉及到表中的全部数据行。...同时,B 事务也修改这个表中的数据,这种修改是向表中插入一行新数据。操作 A 事务的用户发现表中出现了 B 事务插入的行,就好象发生了幻觉一样。...问题产生的原因可以这样来描述了:我们在执行 UPDATE 语句时,MySQL 会将其当成一个事务,对表的行进行锁定,这时又有其他连接进来要 UPDATE 同样的表或者 SELECT 这张表时就必须等待锁资源...这我简直不能接受啊!那我只能看看为啥这个语句如此慢了。
因为我们的服务器接受请求处理并响应数据时,并没有指定响应数据的类型,所以出现了乱码; 而在http中,我们可以通过服务器的响应头指定数据类型,在 http.ServerResponse 类 中为我们提供了...安装具有所需功能的 Node.js 模块,然后在应用层或路由器层的应用程序中将其加装入。...它被用于输出结果以及在生成的客户端函数中通过 .toString() 输出。(默认转义 XML)。 标签含义 <% ‘脚本’ 标签,用于流程控制,无输出。.../static/upload'}); server.use(obj.any()); //最后处理完的数据存在req的files中 server.post('/reg', (req, res)=>{...取出解密 if (data.token) { //有效token }else{ //无效token } 参考资源相关列表: https://nodejs.org/zh-cn/ node.js
前言 我在学习浏览器和NodeJS的Event Loop时看了大量的文章,那些文章都写的很好,但是往往是每篇文章有那么几个关键的点,很多篇文章凑在一起综合来看,才可以对这些概念有较为深入的理解。...这张图将浏览器的Event Loop完整的描述了出来,我来讲执行一个JavaScript代码的具体流程: 执行全局Script同步代码,这些同步代码有一些是同步语句,有一些是异步语句(比如setTimeout...等); 全局Script代码执行完毕后,调用栈Stack会清空; 从微队列microtask queue中取出位于队首的回调任务,放入调用栈Stack中执行,执行完后microtask queue长度减...具体可以通过下图加深一下理解: 大体解释一下NodeJS的Event Loop过程: 执行全局Script的同步代码 执行microtask微任务,先执行所有Next Tick Queue中的所有任务...此时Next Tick Queue中只有一个callback9,将其取出放入调用栈中执行,打印999。