数组无意中被转换为具有超级测试的对象

array unintentionally gets converted to object with supertest

下面的数组 (query.conditions) 以某种方式转换为对象, 知道为什么以及如何防止它吗?

要求:

          supertest(options.url)
            .get('/api/action')
            .expect(200)
            .query({
              conditions: 
                [
                  { 'user' : user._id },
                  { 'type' : 14 },
                  { 'what' : 4 },
                ]
            })

服务器获取的内容:

{
  "conditions": {
    "user": "5592cc851f3febd016dae920",
    "type": "14",
    "what": "4"
  }
}

superagent中好像有issues with query string serialization(被supertest使用)

要解决此问题,您可以对数据使用 qs.stringify()

var qs = require('qs');

...

supertest(options.url)
  .get('/api/action')
  .expect(200)
  .query(qs.stringify({
    conditions: 
      [
        { 'user' : user._id },
        { 'type' : 14 },
        { 'what' : 4 },
      ]
  }))

(如果可能的话,POST JSON 可能更合适)