分类 Node.js 下的文章

//ctx.res
//Node's response object.

//Bypassing Koa's response handling is not supported. Avoid using the following node properties:

res.statusCode
res.writeHead()
res.write()
res.end()

这几天遇到一个怪事,本地测试一切OK,放到服务器就出问题了。还以为是Nodejs或者PM2有个什么缓存什么的。后来打log才发现,其实这其实就是对客户端的输入没有做处理,导致计算的md5的值总是不一致。

后来对参数进行处理,比如统统toString()trim(),然后才好。

中间还加了一个表,就是把token存在表里,再比对什么的,这简直了,越搞越复杂,因为还要用到transaction把token表和user表一起更新(让token失效,让user的验证字段为true)。

这么一个简单的问题,搞得那么复杂。

没什么可说的。
文档不清晰,示例代码是垃圾,被迫要去看源代码。

而且很多用法,竟然都他妈必须通过查别人的博客才能看得到。

首先,PM2对文件路径的处理有些问题,所以我被迫把所有用到path.resolve()的地方全改为相对路径。
其次,PM2不认dotenv,也就是说,默认的require('dotenv').config()是不行的,会报错,所以不得已又加了一个路径的配置,require('dotenv').config({path: '../.env'})。结果开发环境下又报错,然后又搞了一个if-else

这里有以下几个注意点:
1、这个validation只是在Model层面,而不是在Migration,因为Migration是对数据库进行操作,而Model层是对数据本身进行校验;所以其实db:seed是绕开了validation。这是个坑。
2、seeder里写的东西,直接写入数据库,不经过Model层的validation
3、 sequelize真的不行