首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

《Node.js 极简教程》 东海陈光剑

在事件驱动模型当中,每一个IO工作被添加到事件队列,线程循环地处理队列上工作任务,当执行过程遇到来堵塞(读取文件、查询数据库)时,线程不会停下来等待结果,而是留下一个处理结果回调函数,转而继续执行队列下一个任务...Debug不方便,错误没有stack trace nodejs库方法是异步,异步方法是约定。...在浏览器 JavaScript ,通常 window 是全局对象, 而 Node.js 全局对象是 global,所有全局变量(除了 global 本身以外)都是 global 对象属性。...在 Node.js 我们可以直接访问到 global 属性,而不需要在应用包含它。 文件操作 简介 Node.js 提供一组类似 UNIX(POSIX)标准文件操作API。...Node 导入文件系统模块(fs)语法如下所示: var fs = require("fs") 异步同步 Node.js 文件系统(fs 模块)模块方法均有异步同步版本,例如读取文件内容函数有异步

1.5K30
您找到你想要的搜索结果了吗?
是的
没有找到

NodeJS下连接mysql操作(增删查改)

NodeJS下引用mysql进行增删查改 NodeJS下要使用mySql需要安装mysql依赖,输入命令行:npm install mysql --save NodeJS连接mysql数据库简单方法我所知道有...createConnection(Object)方法创建连接池 createPool(Object),这两个方法参数相同,都接受一个对象作为参数,该对象有五个常用属性host,port,user,...与php链接数据库参数相同。属性列表如下: host:       连接数据库所在主机名. (默认: localhost) port:       连接端口....在使用hostport时该参数会被忽略. user:         MySQL用户用户名. password:       MySQL用户密码....debug=true&charset=BIG5_CHINESE_CI&timezone=-0700'); 这里我着重说下创建连接池 createPool(Object)连接数据库方法: 开发我们通常喜欢把连接数据库需要属性写到一个配置文件里

1.8K40

NODEJS开发经验

前段时间做了一个 nodejs 应用,项目架构是 前端 vue 单页应用,后端 nodejs 其实有考虑 ssr,但是因开发时间比较紧张,就没能使用。 下面是开发过程一些经验以及遇到一些问题。...请求 —— koa-favicon 4.接口请求 —— koa-router NODEJS 请求过程 koa 中间件、node端路由 中间件:中间件在请求和响应过程给我们一个修改数据机会 中间件功能包括...4.调用堆栈下一个中间件 中间件是koa核心,中间件return一个中间件函数,最好是用一个函数给封装起来,以便于传参可扩展性。 本项目几乎所有路由处理都是通过中间件完成。...log4js,对于单进程多进程需要做不同配置。...问题原因: 新预发环境nginx配置了缓冲,缓冲过小时候nginx会将数据写入硬盘,而此时如果没有硬盘文件夹读取权限,就会出现请求数据被截断情况。

96510

Nodejs编写异步单元测试代码

Nodejs开发过程,异步这个话题是无论如何都躲不过去,关于异步文章已经有过许多篇了,我也不打算写在开发Web应用过程,该如何在Nodejs处理异步代码。...在前些日子,我跟单元测试覆盖率这个指标杠上了,因为自己在写一个Nodejs工程,我希望这个工程测试代码量不要太少,目标是100%行覆盖率,所以最近写了许多单元测试代码。...使用测试框架是Mocha,断言库是Chai,那么今天我们就来聊聊在单元测试,处理异步代码各种姿势。 处理promise const { query } = require('.....,这段代码就是测试数据库连接状态库,在断言库我偏向于使用should类型,因为更加语义化,更符合TDD阅读习惯。...const { should } = require('chai'); ... should(); 在这样引用了should之后,是无法像刚才代码那样使用should,为什么我会写出这样语法呢?

1.4K10

一篇文章带你掌握MyBatis简化框架——MyBatisPlus

userList = userDao.selectList(lqw); System.out.println(userList); } } 查询结果包含模型类未定义属性...: 例如我们秒杀活动,在之前多线程也有提及过问题 如果我们不希望我们剩余商品数变为负数,那么就需要设置Lock来解决这个问题 首先我们来讲解一下乐观锁基本概念: 乐观锁首先读取当前该商品状态...然后利用当前商品状态为条件来修改商品状态,并且将该商品状态进行修改 如果用户A用户B同时读取商品状态,当用户AWHERE条件成立后修改商品,则用户BWHERE条件就不再成立无法修改 在MyBatisPlus...AND version = version(我们之前读取version) 倘若用户操作前有其他用户操作,那么version就会发生变化,导致用户无法找到对应数据,无法操作 因为我们需要对前面的version...version为1,读取不到数据,无法操作) // UPDATE tbl_user SET ...

46610

Node.js学习笔记(四)——NodeJS访问MongoDB与MySQL数据库

旨在为 WEB 应用提供可扩展高性能数据存储解决方案。 MongoDB 是一个介于关系数据库非关系数据库之间产品,是非关系数据库当中功能最丰富,最像关系数据库。...{ await client.close(); } } run().catch(console.dir); 运行结果: 四、Nodejs访问MySQL 4.1、导入mysql...模块 1、打开根目录,打开终端,初始化执行npm init -y; 2、导入mysql模块: npm i mysql; 4.2、访问数据库 示例以gomall数据库student数据库为例  ...模块 const mysql = require('mysql') // 2.建立MySQL数据库联系 const db = mysql.createPool({ host: '127.0.0.1...(数据对象每个属性字段一一对应情况下可使用) const user = { id: 6, usersname: '夸夸牛', password:'000111' } // 定义SQL语句 const

3.4K20

Node

而我们使用npm就是node自带包(模块)管理工具; 借助NPM可以帮助我们快速安装管理依赖包,使Node与第三方模块之间形成了一个良好生态系统; ?...开头相对路径或绝对路径,引入时可以不写文件后缀名; 重点注意 : 模块方法变量作用于尽在模块内部,每个模块具有独立空间,互不干扰; CommonJS 构建模块机制引入与导出是我们完全不用考虑变量污染或者替换问题...文件 如果找到 package.json 文件,则找该文件 main属性 如果找到main 属性,则拿到该属性对应文件 如果找到 moment 目录之后, 没有package.json 或者有 package.json...,否则,其他方法在后续调用无法连接数据; 5.6 链式操作原理解析 链式操作核心原理: test.js var c = require('....mysql //一般在koa,会把常用模块或中间件放在 ctx.prototype(server.context),以便在任何地方使用 ---------database.js const mysql

10K31

数据库MySQL-视图

3、同一张原始表,根据不同用户不同需求,可以创建不同视图 1.4.2 作用 1、筛选表行 2、防止未经许可用户访问敏感数据 3、隐藏数据表结构 4、降低数据表复杂程度 1.4.3 创建视图...; -- 显示所有的表视图 -- 方法二:精确查找视图(视图信息存储在information_schema下views表mysql> select table_name from information_schema.views...属性查询视图 mysql> show table status\G; -- 查询所有表视图详细状态信息 mysql> show table status where comment='view'\...G -- 只查找视图信息 查询视图结构 mysql> desc view1; 查询创建视图语法 mysql> show create view view1\G 1.4.7 视图算法 场景:找出语文成绩最高男生女生...视图算法有: 1、merge:合并算法(将视图语句外层语句合并后再执行) 2、temptable:临时表算法(将视图作为一个临时表来执行) 3、undefined:未定义算法(用哪种算法有MySQL

1.4K00

Node·七天学会 NodeJS

Buffer 与字符串类似,除了可以用 .length 属性得到字节长度外,还可以用 [index] 方式读取指定位置字节。...data 事件会源源不断地被触发,为了避免 doSomething 函数无法及时处理,处理数据前暂停数据读取,并在处理数据后通过回调函数继续读取数据。...query=string#hash' * } **/ 传给 .parse 方法不一定要是一个完整 URL,例如在 HTTP 服务器回调函数,request.url 不包含协议头域名,但同样可以用...进程管理 NodeJS 可以感知控制自身进程运行环境状态,也可以创建子进程并与其协同工作,这使得 NodeJS 可以把多个程序组合在一起共同完成某项工作,并在其中充当胶水调度器作用。...输出响应 可以看到,第一版代码依次把请求文件读取到内存之后,再合并数据输出响应。

2.1K20

Nodejs读取文件目录所有文件

关于Nodejs文件系统即File System可以参考官方Node.js v12.18.1文档File system Nodejsfs模块 fs模块提供了一种API,用于以与标准POSIX函数紧密相似的方式与文件系统进行交互...使用fs模块: const fs = require('fs'); 所有文件系统操作都具有同步异步形式。 异步形式始终将完成回调作为其最后一个参数。...传递给完成回调参数取决于方法,但是第一个参数始终为异常保留。 如果操作成功完成,则第一个参数将为null或未定义。...举个例子,我想读取上一级目录下所有文件 同步读取上级目录下所有文件 如果采用同步读取的话,可以使用fs模块readdirSync方法,示例如下: const fs = require('fs');...// 同步读取上级目录下所有文件到files const files = fs.readdirSync('../'); console.log(files); 异步读取上级目录下所有文件 如果采用异步读取的话

14.2K40

Mongoose学习参考文档

Schema——纯洁数据库原型 1.1 什么是Schema 我理解Schema仅仅只是一断代码,他书写完成后程序依然无法使用,更无法通往数据库端 他仅仅只是数据库模型在程序片段一种表现,或者是数据属性模型...1.4 Schema.Types NodeJS基本数据类型都属于Schema.Type,另外Mongoose还定义了自己类型 //举例: var ExampleSchema =...是Nodejs两种隐藏对象,相关内容请查看NodeJS-API 1.6 关于Mixed Schema.Types.Mixed是Mongoose定义个混合类型,该混合类型如果未定义具体形式。...如果是使用Model创建对象,传入时一定会将隐藏属性也存入数据库,虽然3.x追加了默认严格属性,但也不必要增加操作报错 3.4 删除   新增一样,删除也有2种方式,但EntityModel都使用...  查询是数据库运用最多也是最麻烦地方,这里对Query解读并不完善,仅仅是自己一点领悟而已。

24.1K90

nodejsmysql管理

2019-07-26 14:10:24 nodejs要想操作mysql需要安装第三方库--mysql,有了这个模块,操作mysql数据库就变得很容易了。...连接mysql可以说有三种方式,分别是普通模式、连接池模式集群连接池模式。...上面的代码示例如果封装起来供其他模块儿调用,会产生一个很大问题,那就是连接一段时间之后,会与mysql断开连接,造成无法访问数据库情况,如果重新启动服务,则又可以正常使用了,提示错误为:nodejs...推荐使用连接池方式 用 createConnection 创建 Mysql 连接,每执行一次 connection.query 都是一个全新连接,会造成一个资源极大浪费,降低性能,如果操作不当还会造成连接中断情况...(sql,params,back) 集群连接池模式 连接池集群可以提供多个主机连接,连接池方法类似,只不过是多个连接池 //创建连接池集群 var poolCluster = mysql.createPoolCluster

1.6K20

myweb框架简单说明

他是一个基于nodejsweb应用框架,其中应用到了express框架jade解析模板。整体上说该框架只是在express搭建了一层mvc实现方式。那么myweb框架给开发者带来了什么便利呢?...链接mysql数据库方式,这里就不需要细讲,大家可以通过github上查找node mysql学习资源。...本框架封装了一些基本数据库操作从而减少开发者开发时间,只需要通过add、update、delete、query、select简单粗暴去执行。...这里我只介绍如何new一个controller同时,访问对象一个action方式 Nodejs不像PHP有一个call_function函数可以执行访问对象某个方法名函数。...我们需要以下要求和需要解决问题: 1、 因为expressreqres是必须要贯穿整个系统,因此我们必须把这两个参数作为基类变量,以便继承类可以随时调用; 2、 如何new一个字符串controller

58530

十个 PHP 开发者最容易犯错误

我们在一个测试盒里演示一下,该测试盒环境是:有限内存(512MB RAM),MySQL php-cli。...是让查询粒度化重复化,还是让单个查询巨大化。生活亦是如此,平衡不可或缺;哪一个极端都不好,都可能会导致 PHP 无法正常运行。...确保你数据库表设置了 Unicode 编码(许多 MySQL 构建版本仍然默认使用 latin1 )。...另一个使用 empty() 产生危险例子是当它魔术方法 _get() 一起使用。我们来定义两个类并使其都有一个 test 属性。 首先我们定义包含 test 公共属性 Regular 类。...总结 PHP 易用性让开发者陷入一种虚假舒适感,语言本身一些细微差别特质,可能花费掉你大量时间去调试。这些可能会导致 PHP 程序无法正常工作,并导致诸如此处所述问题。

2.6K50

十个 PHP 开发者最容易犯错误

我们在一个测试盒里演示一下,该测试盒环境是:有限内存(512MB RAM),MySQL php-cli。...是让查询粒度化重复化,还是让单个查询巨大化。生活亦是如此,平衡不可或缺;哪一个极端都不好,都可能会导致 PHP 无法正常运行。...确保你数据库表设置了 Unicode 编码(许多 MySQL 构建版本仍然默认使用 latin1 )。...另一个使用 empty() 产生危险例子是当它魔术方法 _get() 一起使用。我们来定义两个类并使其都有一个 test 属性。 首先我们定义包含 test 公共属性 Regular 类。...总结 PHP 易用性让开发者陷入一种虚假舒适感,语言本身一些细微差别特质,可能花费掉你大量时间去调试。这些可能会导致 PHP 程序无法正常工作,并导致诸如此处所述问题。

3K90

易犯错误 | 十个 PHP 开发者最容易犯错误

我们在一个测试盒里演示一下,该测试盒环境是:有限内存(512MB RAM),MySQL php-cli。...是让查询粒度化重复化,还是让单个查询巨大化。生活亦是如此,平衡不可或缺;哪一个极端都不好,都可能会导致 PHP 无法正常运行。...确保你数据库表设置了 Unicode 编码(许多 MySQL 构建版本仍然默认使用 latin1 )。...另一个使用 empty() 产生危险例子是当它魔术方法 _get() 一起使用。我们来定义两个类并使其都有一个 test 属性。 首先我们定义包含 test 公共属性 Regular 类。...总结 PHP 易用性让开发者陷入一种虚假舒适感,语言本身一些细微差别特质,可能花费掉你大量时间去调试。这些可能会导致 PHP 程序无法正常工作,并导致诸如此处所述问题。

4.4K20

总结MySQL 一些知识点:MySQL 插入数据

MySQL 插入数据 MySQL 表中使用INSERT INTOSQL语句来插入数据。 你可以通过 mysql> 命令提示窗口中向数据表插入数据,或者通过PHP脚本来插入数据。...在以上实例,我们并没有提供 kxdang_id 数据,因为该字段我们在创建表时候已经设置它为 AUTO_INCREMENT(自动增加) 属性。 所以,该字段会自动递增而不需要我们去设置。...实例 NOW() 是一个 MySQL 函数,该函数返回日期时间。...接下来我们可以通过以下语句查看数据表数据: 读取数据表: select * from kxdang_tbl; 输出结果: 使用PHP脚本插入数据 你可以使用PHP mysqli_query() 函数来执行...语法 mysqli_query(connection,query,resultmode); 参数 描述 connection 必需。规定要使用 MySQL 连接。

51320

软件开发入门教程网之MySQL 插入数据

MySQL 表中使用INSERT INTOSQL语句来插入数据。 你可以通过 mysql> 命令提示窗口中向数据表插入数据,或者通过PHP脚本来插入数据。 ​​...在以上实例,我们并没有提供 kxdang_id 数据,因为该字段我们在创建表时候已经设置它为 AUTO_INCREMENT(自动增加) 属性。 所以,该字段会自动递增而不需要我们去设置。...实例 NOW() 是一个 MySQL 函数,该函数返回日期时间。...接下来我们可以通过以下语句查看数据表数据: ​​读取数据表:​​ select * from kxdang_tbl; 输出结果: ---- ​​使用PHP脚本插入数据​​ 你可以使用PHP mysqli_query...语法​​ mysqli_query(connection,query,resultmode); 参数 描述 connection 必需。规定要使用 MySQL 连接。

51140
领券