一些坑
1. 获取IP时,出现127.0.0.1
在nginx上带上头
location ~
{
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_set_header Host $host;
proxy_pass_header Set-Cookie;
proxy_pass_header P3P;
proxy_pass http://127.0.0.1:8090;
}
2. 异步任务等待回调时,会导致前端超时
解决方案:
- 让前端等待时间长一点
- 弄成两个接口,一个发送,一个查询状态
- 异步任务不管结果
3. 身份证的输入框,不能是number
因为身份证后面有可能出现x
4. 数据库都是小写
windows下大小写不敏感,但linux敏感
5. redis客户端,使用后记得close
6. 退出登录后,axios的header使用的token,不刷新
axios.defaults.headers['Authorization'] = ""
7. Mybatis的if标签判断空字符串 == 0,参数为0时会自动转为空字符串
<if test="goodsStatus!=null and goodsStatus!=''">
and goods_status = #{goodsStatus}
</if>
解决办法
1.当传入的参数有0时,只判断!=null即可。
2.将0转化为String类型,就可以解决这个问题。
8. 传参时,遇到 was expecting double-quote to start field name
请检查最后是否有多余的逗号
9. 设计数据库时,表和表之间的关联字段,最好用主键…
比如 用户表主键为id,但拥有同样是唯一的openid字段,
那么用户收藏的单词表,最好记录user_id,而不是user_openid…
这样方便后期扩展功能
10. pageHelper
sql语句末尾不要带分号
11. js循环字符串
超过两位数,会有bug?
本质上是做比较时候的bug
错误场景:
let start = 9
let end = 10
let bug_start = "9"
let bug_end = "10"
for (let i = start; i <= end; i++) {
console.log(i)
}
本质:
let start = "8"
let end = "9"
let bug_start = "9"
let bug_end = "10"
console.log(start<=end)
console.log(bug_start<=bug_end)
true , false
两个字符串数字做比较为ASCII码比较,依次取每个字符,字符转为ASCII码进行比较:‘5’>‘123’ ==>true
12. vue filter时要注意null
13. mybatis order by失效
select * from pic order by #{sortValue}
会被解析成: select * from pic order by "view_count"
,带了双引号,所以失效了,但是可以防sql注入,解决办法是改成${xxx},但需要控制这个变量。
14. quill加载模块得等到ready以后才行
<QuillEditor @ready="onReady" :modules="modules" />
const modules = ref([])
const onReady = () => {
modules.value = [
{
name: 'blotFormatter',
module: BlotFormatter,
},
];
}
15. 线上和测试环境切换时,出现的缓存问题
A4本地测试时,刷新了缓存,但是线上没有,线上的缓存还是旧的,所以会导致数据不一致
16. new Date().toLocaleTimeString()
该时间的格式为宿主环境的当前区域设置中的缺省格式。因为返回值可能随计算机的不同而不同,所以脚本编写过程中不能依赖此方法的返回值。toLocalTimeString 方法应该仅仅用于格式化显示 – 而绝不要作为计算的一部分。
17. meilisearch filter包含inf 或 infinity
会报错
查看 issues
18. 配置jackson的ObjectMapper时
要小心全局设置会污染其他地方
19. spring的yml中配置redis的index
spring:
redis:
database: 2
这样配置以后,在redis中,应该是select 1