随笔分类 - NodeJS
摘要:一、问题背景 1、报错描述: 今天执行 sql 时发现 Node 服务的日志报错:SequelizeDatabaseError: EE_WRITE: Error writing file '/tmp/MY4QWdUa' (Errcode: 28 - No space left on device)
阅读全文
摘要:JavaScript 是单线程运行,异步操作特别重要。 只要用到引擎之外的功能,就需要跟外部交互,从而形成异步操作。由于异步操作实在太多,JavaScript 不得不提供很多异步语法。这就好比,有些人老是受打击, 他的抗打击能力必须变得很强,否则他就完蛋了。 Node 的异步语法比浏览器更复杂,因为
阅读全文
摘要:Event Loop 是 JavaScript 的基础概念,面试必问,平时也经常谈到,但是有没有想过为什么会有 Event Loop,它为什么会这样设计的呢?今天我们就来探索下原因。 一、浏览器的 Even Loop JavaScript 是用于实现网页交互逻辑的,涉及到 dom 操作,如果多个线程
阅读全文
摘要:为什么前端要了解进程通信:前端领域已经不是单纯写在浏览器里跑的页面就可以了,还要会 electron、nodejs 等,而这俩技术都需要掌握进程通信。 nodejs 是 js 的一个运行时,和浏览器不同,它扩展了很多封装操作系统能力的 api,其中就包括进程、线程相关 api,而学习进程 api 就
阅读全文
摘要:一、require 函数 1、require 函数是什么? 首先,直接说require函数的功能:用来加载目标js库,并返回目标js库公开的属性成员函数/变量。 我们在终端 node shell 输入 this.require require,可以看到为 true 由此可得出结论:require是N
阅读全文
摘要:1、自动保存 通常我们希望PM2本身开机自启,需要执行 pm2 startup 让其注册到操作系统的服务管理工具中。 如果我们还希望PM2中的进程能随着PM2启动而启动,就需要每次在新增或删除进程后执行 pm2 save; 但如果你是一个像笔者一样记性不好的人,很可能会忘记执行这一步,导致PM2重新
阅读全文
摘要:一、pm2 自定义 log 日志文件位置 直接引用 PM2 官网描述:https://pm2.keymetrics.io/docs/usage/log-management/ 1、CLI 示例:pm2 start echo.js --merge-logs --log-date-format="YYY
阅读全文
摘要:这里有篇博客写的挺不错的,可以参考学习:PM2实用入门指南,不过最好的学习方式还是看官方文档。 一、PM2 介绍 PM2(Process Manager 2 )是具有内置负载均衡器的Node.js应用程序的生产运行时和进程管理器。 它允许您永久保持应用程序活跃,无需停机即可重新加载它们,并促进常见的
阅读全文
摘要:一、内部原理 exports = module.exports = {} exports 是 module.exports 的引用,怎么理解这句话呢?大概就是 var a = {}; var b = a; a 和 b 之间的关系吧。 1、require:在文件中 require 实际引入的是 mod
阅读全文
摘要:前后端分离架构带来的好处一搜一大堆,这里主要讨论一下后端接口的安全问题。因为在分离的情况下,后端 api 是暴露在外网中的,常规的web项目无论如何前端都是要通过公网访问到后台api的,带来的隐患也有很多。比如: (1)接口公开,谁都可以访问; (2)数据请求的参数在传输过程被篡改; (3)接口被重
阅读全文
摘要:在 es6 之前 JS 一直没有自己的模块语法,为了解决这种尴尬就有了require.js等AMD或CMD方式的出现。在 es6 发布之后 JS 又引入了 import 的概念使得不清楚两者之间的区别的同学在实际使用过程中造成了自己的误解,在查阅了相关资料之后在此记录下自己的小小见解。 一、requ
阅读全文
摘要:默认已使用终端连接上服务器,进入root文件夹 一、上传node文件到服务器 两种方式可以下载: 1、官网下载:nodeJS官网:http://nodejs.cn/download/ 根据服务器选择对应的文件下载。 需要注意的是这里会有坑:上面 Linux 二进制文件有 2 种,你要先看好自己 li
阅读全文
摘要:一、sequlize.query防止sql注入 在nodejs中使用sequlize库来查询mysql数据库,提供了常用的方法有两种: // 1、直接查询sql语句 sequelize.query();// 需要做sql防注入 // 2、通过接口 Project.findAll(); //在实现上就
阅读全文
摘要:最近做了微信支付及退款一系列操作,微信文档写的也比较简略,网上博客也并不详细,也踩了一些坑,在这里记录下。当然主要还是得根据微信小程序文档一步一步来。 一、wx.requestPayment 发起微信支付。了解更多信息,请查看微信支付接口文档 所谓的发起微信支付,指的是用户侧这边唤起微信支付窗口的a
阅读全文
摘要:在实际开发项目中,会遇到很多定时任务的工作。比如:定时导出某些数据、定时发送消息或邮件给用户、定时备份什么类型的文件等等 一般可以写个定时器,来完成相应的需求,在node.js中自已实现也非常容易,接下来要介绍的是node-schedule来完成定时任务 下面就用示例来说明一下node-schedu
阅读全文
摘要:一、获取formdata上传的文件 问题:使用 koa-bodyparser 可以解析post提交的问题,但是发现获取不到formdata上传的文件。 后经查资料,改用 koa-body 解决: const koaBody = require('koa-body'); app.use(koaBody
阅读全文
摘要:node项目部署之后,发现访问不了,pm2 list也是正常的,vue项目都可以正常访问,就是请求后台nodejs的时候就报404。 原以为是pm2的问题,先停了pm2,用node app.js的方式运行后端代码,项目能正常启动但是依然无法访问 原因:后端运行端口未放行 1、检查ecs的安全组规则,
阅读全文
摘要:Sequelize 允许你为模型的属性定义自定义获取器和设置器. Sequelize 还允许你指定所谓的 虚拟属性(也就是实体类的属性,不是数据库里的字段),它们是 Sequelize 模型上的属性,这些属性在基础 SQL 表中实际上并不存在,而是由 Sequelize 自动填充.它们对于简化代码非
阅读全文
摘要:一、简单 INSERT 查询 首先,一个简单的例子: // 创建一个新用户 const jane = await User.create({ firstName: "Jane", lastName: "Doe" }); console.log("Jane's auto-generated ID:",
阅读全文
摘要:Sequelize 支持标准关联关系: 一对一, 一对多 和 多对多. 为此,Sequelize 提供了 四种 关联类型,并将它们组合起来以创建关联: HasOne 关联类型 BelongsTo 关联类型 HasMany 关联类型 BelongsToMany 关联类型 该指南将讲解如何定义这四种类型
阅读全文