通过POST请求Expressjs JSON对象和数组更改表单

时间:2015-12-15 22:53:23

标签: node.js express

我正在使用Express.js编写一个Web应用程序。在请求正文中发送数据时,任何带数字键的数组或对象都会自动解析如下:

{object1: {23: "abc", 45: "def"}, array1: ["a", "b"]}

解析成:

{"object1[23]": "abc", "object1[45]": "def", "array1[0]": "a", "array1[1]": "b"}

这真令人讨厌,因为当我尝试检索密钥object1array1时,我得到错误密钥不存在而我必须执行object1[23]

1 个答案:

答案 0 :(得分:0)

有两件事可能导致此问题-

  1. 数组大小大于20(表示默认限制为20)
  2. 数组在对象中处于更深的层次(默认限制为5)

解决任何这些问题 首先在您的app.js(应用被初始化的文件)中要求“ qs”

const qs = require('qs');

然后进行使用调用(app.use()) 设置限制(如果在使用调用后编写,将不起作用)

app.set('query parser', function (str) {
    //to allow to receive objects with depths upto 10
    return qs.parse(str, { depth: 10 });
    // return qs.parse(str, {arrayLimit:1000}); to allow arrays of size 1000
});