起因
一個業務場景中,最終得到一串字符"status[0]=value1&status[1]=value2"
通過解析,理應得到一個數組,卻得到一個對象
于是展開問題排查
最終發現是qs.parse 這個地方出了問題
排查結果
qs解析這種帶下標的字符串時,默認會轉換成數組
const str = qs.parse('a[0]=b&a[1]=&a[2]=c');
console.log(str)
// 打印結果 a: ['b', '', 'c']
當這個下標太大的時候,發現出現的結果不是一個數組導致代碼報錯;
于是去看了下文檔
當長度超過20時,這個默認數組就變成對象了;
要解決這個問題只需要配置一下option
const str = qs.parse('a[0]=b&a[1]=&a[22]=c',{ arrayLimit: 30 });