nodejs querystring丢失数组问题

2019-11-15  本文已影响0人  一只特例独行de猪

在开发web的时候发现一个诡异的问题
querystring.stringify在处理大小为1的数组,提交到服务器后解析会丢失数组类型直接变成了字符串, 测试如下:

> const querystring = require("querystring");
> querystring.stringify({a:['1']})
'a=1'
> querystring.stringify({a:['1',"2"]})
'a=1&a=2'
> querystring.stringify({a:['1','2']})
'a=1&a=2'
> querystring.parse(querystring.stringify({a:['1','2']}))
{ a: [ '1', '2' ] }
> querystring.parse(querystring.stringify({a:['1']})) //a之前是数组的
{ a: '1' } //a变成了字符串

解决办法:

  1. 将a字符串化,{a:JSON.stringify(['1'])},服务器端再用parse解析出来
  2. 服务器端判断a为字符串的时候将其转换为数组,type of data.a === 'string' && data.a = [data.a]
上一篇下一篇

猜你喜欢

热点阅读