Node express中获取的get参数数组变成对象
前端是react,后端是express。前端向后端以get方式传递一个字符串内容的数组,后端req.query方式取出。之前一直跑的好好的,但当数组长度达到30左右的时候就会报错,排查后发现后端的req.query取出的数据变成Object对象类型,导致后面join等方法调用报错。
这个问题解决比较简单,可以前端就join成字符串,或者后端判断是数组还是对象,但是原理性的东西一直没查到。
现在想咨询下各位大佬,出现这个错误的原因和原理是什么?是node的原因,express的原因还是其他呢?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
大概看了一下,总结了一下:
express
的query
参数解析, 用的是qs.parse
方法:qs.parse
方法, 会在 这儿, 解析参数:然后遇到数组类型的参数, 会在 这儿, 判断数组的最大长度, 也就是这个
options.arrayLimit
:而
options.arrayLimit
的默认值, 来自于 这儿:这个
options.arrayLimit
参数的含义, 就是当数组类型的参数的索引(index
), 大于options.arrayLimit
的时候, 就会返回一个Object
类型的newObj
.然后通过
qs
的utils.merge
方法, 合并, 转换参数.