记一些踩过的坑

记一些踩过的坑

hpy 521 2022-07-31

一些坑

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

请检查最后是否有多余的逗号
image-1659704281078

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

会报错
image-1669534318610
查看 issues

18. 配置jackson的ObjectMapper时

要小心全局设置会污染其他地方

19. spring的yml中配置redis的index

spring:
  redis:
    database: 2

这样配置以后,在redis中,应该是select 1