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>