最近開發(fā)遇到一個(gè)奇怪的問(wèn)題:頁(yè)面列表分頁(yè)查詢時(shí)出現(xiàn)很多條完全相同的數(shù)據(jù)献联,打完斷點(diǎn)劝篷,發(fā)現(xiàn)接口查詢出來(lái)的數(shù)據(jù)時(shí)沒(méi)問(wèn)題的巴粪,沒(méi)有重復(fù)的通今,但是頁(yè)面顯示的時(shí)候就出問(wèn)題,數(shù)據(jù)重復(fù):
在前端頁(yè)面的請(qǐng)求結(jié)果中發(fā)現(xiàn):Network中Response里得到的數(shù)據(jù)時(shí)正常的肛根,但是Preview里面的數(shù)據(jù)就出現(xiàn)了重復(fù)的情況
正常數(shù)據(jù):
Preview里面分頁(yè)的10條數(shù)據(jù)出現(xiàn)多條重復(fù)數(shù)據(jù)
經(jīng)過(guò)梳理:
NetWork中的 preview 是錯(cuò)誤的辫塌,而response 的值卻是正確的。
使用Postman來(lái)進(jìn)行請(qǐng)求派哲,發(fā)現(xiàn)請(qǐng)求值也是正確的臼氨,那么問(wèn)題可能就出在前端了。
查詢?cè)颍?/h4>
在Preview中芭届,控制臺(tái)會(huì)把發(fā)送過(guò)來(lái)的json數(shù)據(jù)自動(dòng)轉(zhuǎn)換成javascript的對(duì)象格式储矩;
JavaScript中Number類型并不能完全表示Long型的數(shù)字,在Long長(zhǎng)度大于17位時(shí)會(huì)出現(xiàn)精度丟失的問(wèn)題褂乍,超過(guò)17位的部分瀏覽器會(huì)轉(zhuǎn)換為0顯示
解決:
1.調(diào)整表格id字段長(zhǎng)度
2.后臺(tái)把long型改為String類型
結(jié)合實(shí)際我選擇調(diào)整了id長(zhǎng)度猾骡,問(wèn)題解決一死。
由于數(shù)據(jù)庫(kù)id本是自增的汗唱,在數(shù)據(jù)庫(kù)腳本遷移時(shí)將該表格id的默認(rèn)值初始值設(shè)置過(guò)大攻冷,導(dǎo)致后續(xù)id都是大于17位的數(shù)值,前端處理時(shí)失去精度,數(shù)據(jù)出現(xiàn)重復(fù)呀狼;