nodejs
文章平均质量分 50
业火之理
这个作者很懒,什么都没留下…
展开
-
【nodejs】百度翻译api接入使用
前言由于我需要使用翻译服务把文档翻译成英语,每次更新可以自动翻译,省去复制粘贴的操作,就想弄个这玩意。百度翻译先注册开发者:https://api.fanyi.baidu.com/api/trans/product/apiapply开通翻译api服务百度翻译文档:https://api.fanyi.baidu.com/api/trans/product/apidoc百度有个坑,虽然他文档上写免费版的200w字免费,qps是1,但是发现每天调用一定次数后直接就gg 54003,所以开发的人最原创 2021-11-25 12:13:30 · 1594 阅读 · 0 评论 -
【nest】bull的基本使用
前言这玩意用redis做队列的,nest教程写的有点乱,重新写一下。https://github.com/OptimalBits/bullnest官网队列部分nest中文官网队列部分安装$ npm install --save @nestjs/bull bull$ npm install --save-dev @types/bull使用本次demo制作一个接口进行增加队列,一个接口显示队列任务,一个接口可以暂停或者恢复队列,一个接口可以清空老队列。实际上Processor那个相当原创 2021-01-21 11:37:54 · 3860 阅读 · 0 评论 -
【dht】dht简介以及使用nodejs查找dht网络学习笔记
官网bep文件node-bencode用来加解密用的概念Kademlia算法Kademlia是DHT网络的一种实现。在Kademlia网络中,距离是通过异或(XOR)计算的,结果为无符号整数。distance(A, B) = |A xor B|,值越小表示越近。具体算法详细信息可以看此论文。或者去回形针视频里搜下就懂了。KRPC协议KRPC 是节点之间的交互协议,是由 bencode 编码组成的一个简单的 RPC 结构,他使用 UDP 报文发送。一个独立的请求包被发出去然后一个独原创 2021-01-13 16:19:48 · 1106 阅读 · 0 评论 -
【nest】nest学习笔记(七)
前言本篇主要是jwt使用和passport相关官网https://docs.nestjs.com/techniques/authenticationnest官网介绍说验证最好结合使用passport ,并且提供了@nestjs/passportpassport: http://www.passportjs.org/docs/passport自定义策略可以看看这个https://github.com/jwalton/passport-api-docs流程nest 新开个项目 nest原创 2020-09-30 21:20:22 · 561 阅读 · 3 评论 -
【casbin】node-casbin入门
前言学nest时候翻到别人写的权限管理结合casbin搞得,所以要了解权限管理到底怎么写比较完美就要先学一下casbin。官网https://casbin.org/docs/zh-CN/overview相当不错,还有中文翻译。流程先照着他demo起个项目学下,混着别的东西学习效果不好。安装:# NPMnpm install casbin --save# Yarnyarn add casbin开始使用时,我们需要2个模型文件 ,我们直接使用官方的rbac的样例文件做:原创 2020-09-27 19:58:03 · 2092 阅读 · 3 评论 -
【nest】nest学习笔记(六)
前言继续学习nest,本篇为管道和异常过滤器。管道https://docs.nestjs.com/pipes管道的主要作用对客户端传递的数据进行转换,依赖包class-transformer(需要自己安装)对客户端传递的数据进行校验,依赖包class-validator(需要自己安装)Nestjs官方提供的几个内置管道(官网说的开箱即用)ValidationPipeParseIntPipeParseBoolPipeParseArrayPipeParseUUIDPipeDef原创 2020-09-21 00:18:05 · 907 阅读 · 2 评论 -
【nest】nest学习笔记(五)
前言继续学习nest,前几天花了点时间重构了下dooring,学习计划拉的有点多。中间件1、Middlewares中间件(作用在客户端和控制器之间)2、Guards守卫3、Interceptors拦截器(在流被操纵之前)4、Pipes管道5、Interceptors拦截器(在流被操纵之后)6、Exception filters过滤器(如果发现任何异常)函数中间件函数中间件就是跟express中间件写法一样:import { NextFunction, Request, Re原创 2020-09-18 02:07:24 · 681 阅读 · 0 评论 -
【nest】nest结合typeorm基本使用
前言前面分别学习了nest与typeorm的基本使用,下面需要把2者结合起来。本篇任务:1、创建users、posts、role表,每个表字段不少于4个2、users和posts是一对多的关系(不要求一定创建外键)3、users和role是多对多的关系(不要求一定创建外键)4、users、posts、role的增删改操作5、查询用户列表,要同时查询出关联的posts和role的数据6、给用户分配角色的时候时候要加上事务7、上面的全部提供restfull api接口的方式官网资料:htt原创 2020-09-09 19:00:20 · 5737 阅读 · 2 评论 -
【typeorm】typorm学习笔记(三)
前言本篇是find,queryBuilder以及migration相关。find相关1、全部查询所有的字段const userRepository = connection.getRepository(User);const result = await userRepository.find();console.log(result);执行的SQL类似select * from user;2、使用select选择性的查询想要的字段const userRepository = c原创 2020-09-06 19:57:35 · 5187 阅读 · 0 评论 -
【typeorm】typeorm学习笔记(二)
前言本篇是一些x对x的写法。一对一一般情况一对一要创建双向关系,以上次创建的user表为例,额外新增user的扩展表user_extend:import { Entity, PrimaryGeneratedColumn, Column, OneToOne, JoinColumn,} from "typeorm";import { User } from "./User";@Entity({ name: "user_extend" })export class UserEx原创 2020-09-06 16:06:09 · 1952 阅读 · 1 评论 -
【nest】nest学习笔记(四)
前言本篇学习下IOC&DI,Reflect Metadata,以及nest中的大致原理。我主要就是这里比较薄弱,所以看了nest感觉和作者水平差距太大了。Reflect Metadata在写nest时候,上面可能会导入reflect metadata 。官网 https://www.npmjs.com/package/reflect-metadata官网上说了,使用这玩意需要tsconfig开启2个装饰器按钮:To enable experimental support for原创 2020-09-05 08:21:10 · 394 阅读 · 0 评论 -
【typeorm】typeorm学习笔记(一)
前言最近越来越多听到这玩意了,试玩下。看了下介绍,有点叼,一个orm居然支持各种主流数据库。安装npm install typeorm -g生成项目typeorm init --name MyProject --database mysql配置文件{ "type": "mysql", // 选用的数据库 "host": "localhost", // 数据库地址 "port": 3306, // 数据库端口 "username": "test", // 数据库用户名原创 2020-09-03 07:13:53 · 5791 阅读 · 5 评论 -
【nest】nest学习笔记(二)
前言继续学习nest。本篇是传参、模板、cookie、session的使用。知识梳理在Nestjs中接收浏览器上的参数1、常见的方法列表No.名字字段说明(参考express框架字段)1@Request()req 获取到req请求的参数2@Response()res 使用了res就不使用使用return返回值需要使用res.send()3@Next()next4@Session()req.session5@Param(key?原创 2020-09-01 23:48:15 · 1420 阅读 · 0 评论 -
【nest】nest学习笔记(一)
前言最近在学nest,感觉这个框架写的真nb,而且感觉有点django的味道,不过据说是仿spring搞得,先玩玩试试。另外,关于nest,个人觉得不建议新手以及不懂ts的人学,即使学会了,也只是知道个套路写法,并不是真正的会,对个人技术提升没有实质性帮助。创建项目官网地址:https://docs.nestjs.com/cli/overview安装脚手架npm install -g @nestjs/cli查看命令:nest-book git:(master) nest #原创 2020-09-01 03:44:32 · 1885 阅读 · 1 评论 -
【React】前后端手写分片上传秒传与断点续传
前言上传一般都用别人写好的。自己实现遍比较有意思,同时理解更透彻。流程一、制作基本样式首先,需要做出个上传的基本样式。由于原生的上传文件样式太丑。所以需要自己额外写个div,放个图标上去来替代原生样式:function SpliceUpload(){ const fileRef = useRef<HTMLInputElement>(null) con...原创 2020-03-29 14:54:21 · 3207 阅读 · 1 评论 -
【nodejs】mongoose批量删除无效的坑
场景这个坑把我给坑到了,。一般我们写的删除语句都是这样:xxxModel.deleteMany({_id:$in:[aid,bid]})这样看起来好像没啥毛病。但是。。这样运行不会报错,也不会删除掉你想要的id内容。解决方法为啥?我研究半天,一开始以为语句写错了,找半天,后来感觉可能是ObjectId的问题,又搞半天还不行,感觉可能是字符串问题,或者是_id没加冒号?,搞...原创 2020-03-09 15:10:04 · 1063 阅读 · 0 评论 -
【nodejs】mocha+chai+nyc基础
前言以前就听说单元测试什么的,没怎么重视,既然这玩意那么多人吹,肯定有好处,再研究看看。官网chai官网文档mocha文档。chai-http文档nyc文档安装用js的不用装@types。cnpm i mocha @types/mocha chai @types/chai chai-http nyc -Dpackage.json配置如果直接执行test配命...原创 2020-03-08 19:59:36 · 2216 阅读 · 2 评论 -
【typescript】express结合ts制作注册登录接口
前言记录下ts实现后端接口的操作。安装先进目录初始化,然后安装依赖cnpm i express mongoose body-parser bcryptjs jsonwebtoken morgan cors validator helmet dotenv multer http-status-codes -Scnpm i typescript @types/node @types...原创 2020-02-15 10:28:37 · 2405 阅读 · 0 评论 -
【egg】egg.js基础(一)
前言我第一次了解egg.js时候,感觉非常nb。稍微学了一下,结果后来又忘差不多了。我现在养成了一种不写博客就感觉自己不会的习惯。就算当时会了,过段时间也忘了。安装先不用脚手架,熟悉下里面东西。cnpm i egg --savecnpm i egg-bin --save-dev这个egg-bin就相当于我们经常配的package.json里script命令。通过scrip...原创 2020-02-09 22:11:47 · 1239 阅读 · 1 评论 -
【javascript】事件环eventloop开餐厅版本总结
背景由于前面写的一篇【javascript】手写Promise分步骤超详尽解答(超越PromiseA+标准)中提到event loop,然后那个文章里没写详细,并且网上很多教程忽略了版本问题,特此来总结下。由于直接说可能太枯燥了容易忘,我总结成开餐厅版本。概念一、事件环顺序问题首先,我这有3家餐厅,一家叫node10,一家叫node12,一家叫浏览器。这3家餐厅每家都雇了一位服务...原创 2019-10-17 23:24:21 · 185 阅读 · 2 评论 -
【graphql】express+mongodb+mongoose制作graphql接口
前言最近学了graphql,感觉真香,这玩意必须要总结下!!!准备工作首先创建项目,npm init ,然后需要安装下面这些包cnpm i express graphql express-graphql mongoose cors -D这次用的是Mongodb数据库,官网进行安装,这就不用说了。...原创 2020-01-05 03:47:56 · 550 阅读 · 0 评论 -
【websocket】原生实现方式记录
前言虽然现在有比较好用的socket.io库,但是原生实现websocket特别有助于了解其到底是怎么工作的。原理websocket应用层协议,它基于TCP传输协议,并复用HTTP的握手通道。前置知识数据帧格式WebSocket客户端、服务端通信的最小单位是帧,由1个或多个帧组成一条完整的消息。发送端:将消息切割成多个帧,并发送给服务端接收端:接收消息帧,并将关...原创 2019-12-18 06:04:06 · 287 阅读 · 0 评论 -
【nodejs】不用WebSocket模拟即时通讯的几种方式(Comet与SSE)
背景最近学了websocket,感觉很有趣,特别是不用websocket也能模拟出即时通讯效果的骚操作非常牛b。Comet这个Comet翻译成中文叫服务器推技术。传统模式是客户端发请求,服务端返回就结束了,但这明显不能满足即时报价,即时通讯之类需求。而comet技术解决这个痛点一般采用2种方式:1、在浏览器端安装插件,基于套接口传送信息,或是使用 RMI、CORBA 进行远程调用...原创 2019-12-11 04:40:10 · 1055 阅读 · 0 评论 -
【javascript】解决跨域的几种方式
背景这个写的人太多了,我觉得很多人少说了很多东西,导致一大部分人配置跨域都不明白或者直接失败,所以总结下。简单请求与复杂请求学习跨域前,需要先了解如何会产生跨域问题,以及简单请求和复杂请求。跨域是浏览器限制,浏览器发起请求才会有的,服务端对服务端之类是没有跨域限制的。跨域就是只要域名不同或者域名相同端口号不同就会有跨域。简单请求就是正常的get或者post请求,不设置额外请求头之...原创 2019-11-30 00:40:12 · 447 阅读 · 1 评论 -
【nodejs】http强缓存协商缓存以及设置
背景以前啥都不懂时候听这个名字感觉好牛b的,实际上这玩意很简单,就是改个请求头完了。概念一、强缓存强缓存是设置过期时间,超过设置的时间会发请求,否则就会走缓存,连请求也不会发。状态码是200二、协商缓存协商缓存常用模式有两种,一种是last-modified,一种是etag。也有地方叫对比缓存的。last-modified就是资源的修改时间。如果客户端来请求服务器一个文件...原创 2019-11-27 07:57:21 · 2975 阅读 · 0 评论 -
【nodejs】手写个静态目录服务并打包
背景静态目录服务很多都是有打包好的。但是写代码就怕不想写,写这个文章就是逼着自己不用人家封装好的写一个。流程需要第三方模块,mime,chalk,nunjucks,commander。npm安装一下即可。一、建个bin目录,下面放www文件,编写入口。#! /usr/bin/env nodelet program = require('commander')let confi...原创 2019-11-19 23:05:11 · 568 阅读 · 0 评论 -
【nodejs】nodemon简易用法
作用文件修改能自动重启服务器使用npm i nodemon-g写个服务器示例:let http = require('http')let server = http.createServer()server.on('request',function (res,req) { })let port = 3000server.listen(port,()=>{...原创 2019-11-18 15:04:54 · 808 阅读 · 0 评论 -
【nodejs】手写简易可读流
背景上一篇写了流的常用用法,这次通过fs读写文件来实现读写流的api createReadStream与WriteStream在实现这2个api的时候,发现这个主要是借用了events的发布订阅模式,写起来会有种写简易promise的感觉,因为都有个控制状态。不过没有数组,而是通过发布订阅触发回调。可读流先把fs的createReadStream换成自己的let ReadStre...原创 2019-11-18 00:36:32 · 200 阅读 · 0 评论 -
【nodejs】读流写流以及拷贝常用方法
背景我听说nodejs的流是常见的面试考点,这次详细总结下。读流一、读流的用法这个fs.creatReadStream是基于原生的require(‘stream’)//a用于文件追加,不存在则创建//w+ 文件读取和写入,不存在创建,存在就截断const fs = require('fs')let rs = fs.createReadStream('./sss.txt',...原创 2019-11-17 01:12:20 · 343 阅读 · 0 评论