Node + Express + MySQL 开发RESULT API(三)配置优化
上一篇笔记我们实现了邮箱+验证码注册的功能,并且在小结的时候也发现了几个问题。如果这些问题放到项目最后在解决,会存在代码改动量过大,容易出错。所以这篇笔记主要针对这几个问题进行优化、解决,使得项目更加健康。
参数校验以上一篇笔记中的代码为例,我们仅仅判断3个入参是否为空就已经写了一堆if...else if...else来判断,那如果加上参数类型,或者入参更多一些,恐怕这种方式就难以为继了。
12345678910111213141516171819202122// 通过邮箱注册用户exports.register = async (req, res, next) => { const { email, code, type_id } = req.body if (!email || !code) { res.status(400).send({ code: -1, message: '邮箱或验证码不能为空', data: null }) } else if (!type_i ...
解决群晖Docker安装MySQL时区问题
前段时间在群晖NAS的Docker里安装了MySQL,方便自己折腾result API开发,最近在开发时遇到了一个问题,就是数据库的时间跟北京时间相差8小时,会导致时间判断出错,这里记录一下解决办法,供遇到同样问题的同学参考。
问题描述在做邮箱+验证码登录的功能时,我们将javascript生成的验证码和过期时间存到了数据库的表中。然而在利用过期时间做查询校验时,却发现不管验证码过没过期,都查不到任何数据。
12let sql = `select * from ${type == 'register' ? 'temp_user_code' : 'user'} where email = '${email}' and expires_at > NOW()`const [rows] = await pool.query(sql, [email])
排查过程一开始以为是生成验证码和过期时间的函数有问题,但是不管是console.log(),还是查看数据库表的存储 ...
Node + Express + MySQL 开发RESULT API(二)邮箱+验证码注册
上一篇笔记主要记录了如何快速搭建一个用Node + Express + MySQL开发的RESULT API小项目,并且编写并运行了一个GET接口。这篇笔记会继续完善这个小项目,将API开发中的CURD完整的写出来。
上一篇笔记的最后我们实现了一个查询接口,用来查询用户的身份(分类),这篇笔记我们来实现通过邮件验证码来注册用户。
创建数据库表在数据库中创建两个表user,temp_user_code表,用来存储用户数据和验证码数据,并设计以下结构。
名
类型
长度
小数点
不是null
虚拟
键
注释
id
int
10
0
√
√
用户id(无符号,自动递增)
openid
varchar
255
0
微信openid
email
varchar
15
0
√
邮箱(添加UNIQUE索引)
code
varchar
6
0
邮箱验证码
expires_at
datetime
0
0
验证码过期时间
type_id
tinyint
2
0
用户身份id(添加外键指向user_type表中的id字段)
create_t ...
Node + Express + MySQL 开发RESULT API(一)框架搭建
最近在用uni-app给娃做一个日常习惯打卡的APP + 小程序,后端接口打算用Node+Express去做,后续部署到Serverless,虽然近几年出了很多Node框架,但思虑再三,还是选择用比较成熟的Express来做,毕竟社区成熟度在这儿摆着。
初始化这个系列的文章主要记录开发和后续部署到Serverless的过程。至于如何安装Node和MySQL网上有大量现成的教程,这里不再过多赘述。
本系列笔记选用Express 5.X版本开发,需要Node.js版本至少为18或更高。
安装Express首先新建一个文件夹,并初始化项目,然后安装Express。
1npm init -y
1234567891011121314Wrote to C:\Users\Administrator\Desktop\express-api\package.json:{ "name": "express-api", "version": "1.0.0", "description": ...
适合儿童的英文原版书阅读、裸听书单
整理一下互联网上推荐的英文原版书单,以及蓝思指数中外年级对照表,方便自家娃使用。俗话说得好,鸡娃不如鸡自己。好在娃对英语不反感,对好些英语绘本还挺喜欢的,希望能顺顺利利按照这个路子坚持下去。
蓝思指数什么是蓝思值?蓝思值(Lexile)是全球广泛使用的英语阅读分级系统,通过算法得出,精准反映个人英语阅读理解能力。
蓝思值是如何计算的?蓝思值通过分析文本中的词汇复杂性和橘子结构来计算出一个数值,通常以“L”后跟数字表示,例如800L。
蓝思值的计算主要依赖句子长度和词汇频率。数值越大,表明句子长度越长,词汇重复出现的频率也越低,整体阅读难度也就更高。蓝思值的范围为0L-2000L,通常人的阅读能力为0-1700L。
蓝思值查询
AD = Adult Directed:家长指导读物,适合亲自共读。
NC = Non-Conforming:非常规书籍,语言难度超过了目标读者的阅读能力,适合阅读能力高于平均水平的读者。
HL = High-Low:趣味性高但难度低的书籍,适合较高年级阅读能力较低的学生。
G = lllustrated Guide: ...
群晖NAS使用指北-Docker安装MySQL
玩 NAS 有一段时间了,最近准备试试在 NAS 上面安装 MySQL 数据库,用来存放一些自己折腾的数据,由于对 Docker 搭建 MySQL 还不是特别熟悉,特通过此笔记进行记录,方便后续查看。
安装教程拉取映像先使用PuTTY通过 ssh 连接 NAS,登录之后输入以下命令进行拉取 MySQL 的映像。
1docker pull dockerpull.cn/mysql:8.0.4
如图所示,说明映像已经拉取成功,否则请检查 docker 的镜像是否可用,并替换dockerpull.cn字段重试。或者进行科学上网,使用官方镜像拉取。
安装映像在 docker 文件夹下创建 mysql 文件夹,并创建 conf、data、logs 三个子文件夹,用于存储配置文件、数据、错误日志。
右键我们创建的mysql文件夹,选择属性,选择权限,勾选应用到子文件夹。
双击 mysql 映像并启动,输入容器名称,并点击高级设置,勾选“启用自动重新启动”。
切换到存储空间,添加文件夹,选择上面创建的三个文件夹,并填写相应的装在路径。
切换到端口设置,填写本地端口(随便写,后面要用到 ...
手把手教你DIY一台属于自己的NAS——硬件篇
自己DIY的家庭NAS已经稳定使用一年半了,最近又刷到了很多成品NAS的软广,感觉真的是把很多不懂数码的小白当韭菜割。所以我决定写一个系列性教程,供那些想要DIY但又不知如何操作的小伙伴参考,话不多说,开干!
基础知识想要DIY一个自己的NAS,首先要对NAS有一个基本的了解。本质上,NAS就是一个电脑主机加一个特殊的系统。我们可以通过这套设备来实现在任意时间、任意地点来访问我们存储在这套设备里的内容,比如:相册、电影、电子书。甚至我们可以利用NAS来搭建自己的导航页、博客等等。
直接把家里的电脑改成NAS这显然是有点大材小用,一方面家里的电脑还有其他用处,改成NAS以后没办法日常办公娱乐,另一方面NAS的使用场景使得我们必须考虑这套设备的功耗来节约电费。
但我们完全仍然可以利用家里淘汰下来的旧电脑主机配件来作为DIY的原材料。
定个小目标我们希望DIY的这台NAS至少有以下几个功能:
相册备份以及管理全家人的照片。
实现家庭影音库。
实现电子图书馆。
存储各种资料。
可以在手机端操作。
便捷的可拓展性,便于后续实现其他功能。
硬件配置清单先放出我自己DIY的NAS硬件配置清单 ...
慢读《魔兽世界·部落的崛起》
权力、野心、堕落与救赎;文明的碰撞;个体与传统权威下的认知困境。花了四个晚上,一边看一边做笔记,终于看完了这本小说。小说通过霜狼氏族的酋长杜隆坦的成长经历为线索,讲述了兽人一族是如何在古尔丹的带领下走向腐化与堕落,最终沦为战争的机器:部落。
权力与堕落
“他的允诺十分诱人,令人激动,使人心生向往”面对萨格拉斯的允诺,艾瑞达的三位领袖做出了截然不同的选择:阿克蒙德和基尔加丹选择了宣誓效忠,得到了无尽的力量,可也变成了扭曲的怪物“曼阿瑞”。维纶选择了谨慎拒绝,拯救了部分艾瑞达人,却也因此遭到昔日好友基尔加丹的追杀,不得不在纳鲁的帮助下开启了逃亡之旅。
文明与冲突
兽人因为氏族隔阂一直以松散的氏族个体存在。在德莱尼人(维纶和他所拯救的人民)逃亡至此并定居的两百年间,两个种族保持着谨慎和微妙的平衡。
一次科什哈格节上,两个年幼的兽人——霜狼氏族的杜隆坦和黑石氏族的奥格瑞姆建立了兽人千百年来第一段跨越氏族的友情。
年幼的二人因为一次意外探险被德莱尼人瑞斯塔兰所救。在泰尔莫城,二人与维纶相遇,两种文明进行了短暂的交融,而这一经历也为后来的冲突埋下伏笔。
野心与背叛
“仇恨是强大的。仇恨可能是 ...
Hexo + Butterfly 实现根据作者进行文章分类查询
前言由于hexo自身并未实现多作者,包括butterfly主题也没有相关方面的设置。所以一直也无法根据作者进行文章分类。
今天抽空看了看hexo的插件开发教程,简单写了一个插件,搭配任意主题都可以实现根据作者进行文章分类查询(多人博客)效果。
安装整个安装步骤分为三步:1.插件安装、2.主题文件修改、3.指定作者。
插件安装在博客根目录打开git bash,输入以下命令安装hexo-generator-author3插件。
1npm install hexo-generator-author3 --save
然后在博客的source目录下新建authors文件夹,进入authors文件,新建index.md文件并输入以下内容:
123456---title: 作者date: 2024-09-08 02:18:32type: 'authors'comments: false---
主题文件修改安装好插件以后,需要在对应的主题文件下面创建模板,便于根据模板生成对应的文件。
以butterfly主题为例:
在主题themes\butterfly\scripts\h ...
Kindle 换美区超详细教程
前言根据亚马逊官方消息,kindle中国运营在2024年6月30日将全面停止运营!
6月30日后,将无法继续从应用商店下载Kindle APP,以后kindle APP仅能阅读已经下载的电子书。
云端服务也将全面停止所有云端内容必须在6月30日之前下载,云端内容包含电子书及个人文档。
Send to Kindle也将于6月30日关闭,包含浏览器传送、邮箱传送等所有无线传输路径,以后传输只能数据线传输。
但是,这能难倒我们国人吗?既然中国区停了,那我们换个正常运营的区是不是就行了!
于是在即将停服的前3天,通过查询资料,加上自己亲自动手,Kindle换美区成功,完美迁移,继续邮箱传书!
换区教程第一步、备份当前Kindle图书数据
用数据线把kindle和电脑连接,打开我的电脑,找到Kindle磁盘(连接数据线时要解锁Kindle)。
找到documents文件夹,直接将整个文件夹复制一份到电脑桌面。(这个文件夹包含了电子书、浏览记录、摘要笔记等内容)
第二步、注册亚马逊美区账号
首先进入亚马逊美区(注意结尾是.com不是.cn)https://www.amazon.com/
...