1.serializeArray()的用法
获取去表单内容
//serializeArray()获取表单中的内容但是结果
[{name:'email',value:'122@qq.com'}]
[{name:'password',value:'123456'}] 很弱智
//变成Json对象
function serializeArrayToJson(form){
var result = {};
var f = $(this).serializeArray();
f.forEach(function(itme)){
result[item.name]=item.value;
}
return result;
}
这样就变成{emal:'122@qq.com',password:'123456'}
2.密码加密 bcrypt
1.使用哈希算法加密的单程加密方式,只能从原始密码加密成特殊密码,不能从特殊密码解密成原始密码
2.但是可以通过比对自己之前加密过的数据来判断密码(暴力破解)
3.所以需要在加密的密码中加入随机字符串(salt 盐?)来增加密码被破解的难度
4.生成随机字符串和对密码加密都是异步函数
3.cookie和session
session 如果服务器重启了就失效了
4.Joi
如果写了一大堆规则 没有require,那么传入空的东西也会直接通过
但是传入的是这个Joi.validate({},schema),而不是这个Joi.validate({name:''},schema)
//string的min是长度
name : Joi.string().min(2).max(5).error(new Error('name有问题')),
//number的min是数值
birth:Joi.number().min(1900).max(202)
--------------------------------Joi.validate is a not function解决办法·-------------------------------------------
在npm install joi的时候下载的是最新版本+ joi@17.1.1,对于一些API高版本会舍弃从而出现报错。
1.卸载joi
npm uninstall joi
2.下载14.3.1
npm install @14.3.1
5.JSON.stringify() 可以将对象转换成字符串类型
JSON.parse(err); 可以将字符串转换成对象
6.出现莫名其妙的错误,什么都没错但就是不行,那就把代码重新打一下
7.User.countDocuments(查询条件) 查询总数, Math.ceil(count/pagesize)向上取整
8.select选项中,只要option里有selected就是被选中,而两个被选中就会显示后面那个
所以selected = 'selected':''是错的,因为左边已经有selected了 不管右边是什么都会被选中
<select class="form-control" name= 'role' >
<option selected="{{use.role == 'normal'?'selected':''}}">普通用户</option>
<option selected="{{use.role == 'admin'? 'selected':''}}">超级管理员</option>
</select>
应该是这样
<select class="form-control" name= 'role' >
<option {{use.role == 'normal'?'selected':''}}>普通用户</option>
<option {{use.role == 'admin'? 'selected':''}}">超级管理员</option>
</select>