ngtwewy

Sequelize 提供了一个方法 Model.bulkCreate,可以只用一次查询插入多条数据。bulkCreate(records, [options]) -> Promise.> 参数records Array 要创建实例的对象(键/值 对)列表 [options] Object [options.fields] Array 要插入的字段。默认全部 [options.validate=true] Boolean 插入每条记录前进行验证 [options.hooks=true] Boolean 在执行前/后创建钩子 [options.individualHooks=false

2021-01-14    Node.js    23
ngtwewy

安装 node-xlsxnpm install node-xlsx --save读取 Excelvar xlsx = require('node-xlsx'); // 解析得到文档中的所有 sheet var sheets = xlsx.parse('test.xls'); // 遍历 sheet sheets.forEach(function(sheet){ console.log(sheet['name']); // 读取每行内容 for(var rowId in sheet['data']){ console.log(rowId);

2021-01-14    Node.js    19
ngtwewy

通常异常使用方式:try { JSON.parse(json); } catch (e) { // TODO } 但是这对于异步编程而言并不一定适应。异步I/O的实现主要包含两个阶段:提交请求和处理结果。这两个阶段中间有事件循环的调度,两者彼此不关联。异步方法则通常在第一个阶段提交请求后立即返回,因为异常并不一定发生在这个阶段,try/catch的功效在此处不会发挥任何作用。异步方法的定义如下:try{ process.nextTick(callback); }catch(e){ //todo... } 调用async()方法后,callback被存放起

2020-12-15    Node.js    87
ngtwewy

当内存中无法一次装下需要处理的数据时,或者一边读取一边处理更加高效时,我们就需要用到数据流。NodeJS中通过各种 Stream 来提供对数据流的操作。官方文档: http://nodejs.org/api/stream.html小文件拷贝fs.writeFileSync(dst, fs.readFileSync(src)); 大文件拷贝上边的程序拷贝一些小文件没啥问题,但这种一次性把所有文件内容都读取到内存中后再一次性写入磁盘的方式不适合拷贝大文件,内存会爆仓。对于大文件,我们只能读一点写一点,直到完成拷贝。因此上边的程序需要改造如下。fs.createReadStream(src).pi

2020-12-15    Node.js    75
ngtwewy

最终我选择使用了 sharp https://github.com/lovell/sharp基本用法:var images = require("images"); images("input.jpg") //Load image from file //加载图像文件 .size(400) //Geometric scaling the image to 400 pixels width //等比缩放图像到400像素宽 .draw(images("l

2020-12-14    Node.js    74
ngtwewy

process.env 介绍process(进程)对象是一个 global (全局变量),提供有关信息,控制当前 Node.js 进程。作为一个对象,它对于 Node.js 应用程序始终是可用的,无需使用 require()。process.env 属性会返回包含用户环境的对象。文档:http://nodejs.cn/api/process.html#process_process_env很明显的一个使用场景,依靠这个我们就可以给服务器上打上一个标签。这样的话,我们就能根据不同的环境,做一些配置上的处理。如何配置环境变量Windows临时配置直接在cmd环境配置即可,查看环境变量,添加环境变量

2020-10-26    Node.js    225
ngtwewy

负载均衡的一般概念负载均衡是高可用网络基础架构的关键组件,通常用于将工作负载分布到多个服务器来提高网站、应用、数据库或其他服务的性能和可靠性。一个没有负载均衡的 web 架构类似下面这样:在这里用户是直连到 web 服务器,如果这个服务器宕机了,那么用户自然也就没办法访问了。另外,如果同时有很多用户试图访问服务器,超过了其能处理的极限,就会出现加载速度缓慢或根本无法连接的情况。而通过在后端引入一个负载均衡器和至少一个额外的 web 服务器,可以缓解这个故障。通常情况下,所有的后端服务器会保证提供相同的内容,以便用户无论哪个服务器响应,都能收到一致的内容。从图里可以看到,用户访问负载均衡器,再由

2020-10-13    Node.js    84
ngtwewy

PM2 配置文件: 生态系统文件 ecosystem.config.js当在多个服务器上部署或使用多个CLI参数时,使用生态系统文件来替代命令行启动应用,将会更加方便。生态系统文件的目的是收集应用所有的配置选项和环境变量。创建一个 ecosystem.config.js:pm2 init 这个命令会生成:module.exports = { apps: [{ script: 'index.js', watch: '.' }, { script: './service-worker/', watch: ['./service-worker'] }],

2020-10-13    Node.js    167
ngtwewy

pm2 的日志模块默认是每一个服务进程都分配两个默认的日志文件,普通日志和错误日志。这两个日志文件存放于/root/.pm2/logs中,如果pm2管理5个服务,那么该文件夹下总共有10个日志文件,并且随着时间不断增加,很容易就会产生很多个上g的日志文件,导致了服务器的磁盘空间不足的问题清理日志在 pm2 运行时,如果手动删除日志文件,那么后续的日志不会被写入,需要重启pm2的进程。使用 pm2 flush 可以清理日志不需要重启。查看实时日志pm2 logs # only app logs pm2 logs app 日志文件配置可以自定义日志文件位置:module.exports =

2020-10-13    Node.js    98
ngtwewy

简介:一个轻量级的参数验证工具,国人开发,非常符合我的口味。安装:npm install parameter --save 使用方法:constructor([options]) - new Class Parameter instanceoptions.translate - translate functionoptions.validateRoot - config whether to validate the passed in value must be a object, default to false.options.convert - convert primitive

2020-10-13    Node.js    110
ngtwewy

简介触发器(Emitter)类型的对象会触发命名事件来调用函数(又称监听器,Listener)。所有能触发事件的对象都是 EventEmitter 类的实例。 这些对象有一个 eventEmitter.on() 函数,用于将一个或多个函数绑定到命名事件上。 事件的命名通常是驼峰式的字符串。当 EventEmitter 对象触发一个事件时,所有绑定在该事件上的函数都会被同步地调用。 被调用的监听器返回的任何值都将会被忽略并丢弃。例子,一个简单的 EventEmitter 实例,绑定了一个监听器。 eventEmitter.on() 用于注册监听器, eventEmitter.emit() 用于触

2020-10-11    Node.js    76
ngtwewy

寻找轻量级的验证器,可以看下 https://github.com/node-modules/parameterhttps://javascript.net.cn/article?id=732安装npm install @hapi/joi --savenpm install joi --save 用法示例const Joi = require('@hapi/joi'); const schema = Joi.object({ username: Joi.string() .alphanum() .min(3) .max(30) .requir

2020-07-05    Node.js    252
ngtwewy

遍历目录遍历目录是操作文件时的一个常见需求。比如写一个程序,需要找到并处理指定目录下的所有JS文件时,就需要遍历整个目录。递归算法遍历目录时一般使用递归算法,否则就难以编写出简洁的代码。递归算法与数学归纳法类似,通过不断缩小问题的规模来解决问题。以下示例说明了这种方法。function factorial(n) { if (n === 1) { return 1; } else { return n * factorial(n - 1); } } 上边的函数用于计算 N 的阶乘(N!)。可以看到,当 N 大于 1 时,问题简化为计算 N 乘以 N-1

2020-04-06    Node.js    158
ngtwewy

Transaction是Sequelize中用于实现事务功能的子类,通过调用Sequelize.transaction()方法可以创建一个该类的实例。在Sequelize中,支持自动提交/回滚,也可以支持用户手动提交/回滚。1. 事务的使用Sequelize有两种使用事务的方式:基于Promise结果链的自动提交/回滚另一种是不自动提交和回滚,而由用户控制事务 1.1 受管理的事务(auto-callback)受管理的事务会自动提交或回滚,你可以向sequelize.transaction方法传递一个回调函数来启动一个事务。需要注意,在这种方式下传递给回调函数的transaction会返回一个

2019-07-17    Node.js    192
ngtwewy

一,空格与格式 缩进 采用2个空格缩进,而不是tab缩进。 空格在编辑器中与字符是等宽的,而tab可能因编辑器的设置不同。2个空格会让代码看起来更紧凑、明快。 变量声明 永远用var声明变量,不加var时会将其变成全局变量,这样可能会意外污染上下文,或是被意外污染。 在ECMAScript 5的strict模式下,未声明的变量将会直接抛出ReferenceError异常。 需要说明的是,每行声明都应该带上var,而不是只有一个var,示例代码如下: var assert = require('assert'); var fork = require('child_proce

2019-07-17    Node.js    188
随机推荐
禁止浏览器下拉刷新
无法启动mysql服务 错误1067:进程意外中止
原生JS判断页面滚动到底部
MySQL汉字转换为拼音
Apache、PHP 配置 open_basedir,以及性能问题
什么是 Dao、Service、Controller、Util 和 Model ?
macOS重装Adobe Photoshop CS6
HTTP header详解
SQL表名,应该用复数还是单数
详解 RESTful API 中的动词覆盖