You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Node.js接收Postman传递的id数组时typeof返回object问题排查

问题原因

这是JavaScript的固有语法特性:typeof 运算符对数组类型的返回值固定为object,你控制台打印的[ 'M', 'N' ]已经是标准数组类型,不需要额外做JSON转换。你调用JSON.parse报错,是因为输入值已经是解析完成的JS数组,不是JSON字符串,无法再次解析。

验证数组的正确方法

用Array.isArray()方法判断即可,测试代码如下:

let c_id: any = req.body.id;
console.log(c_id) // 输出 [ 'M', 'N' ]
console.log(typeof(c_id)) // 输出 object 属于正常现象
console.log(Array.isArray(c_id)) // 输出 true,证明是数组
console.log(c_id.length) // 输出 2,符合你传入的元素数量
console.log(c_id[0]) // 输出 M,可以正常按下标读取元素

数组参数的兼容处理

如果需要兼容传入单个id字符串的场景,可以加一层兜底转换,确保拿到的一定是数组:

const idList = Array.isArray(c_id) ? c_id : [c_id]

Cosmos DB多ID查询示例

你说直接当数组使用没有得到预期结果,大概率是查询语句的参数写法有误,正确的多ID查询写法参考:

const querySpec = {
  query: "SELECT * FROM c WHERE c.id IN (@idList)",
  parameters: [
    { name: "@idList", value: idList }
  ]
}
// 也可以用ARRAY_CONTAINS写法,效果一致
const querySpec2 = {
  query: "SELECT * FROM c WHERE ARRAY_CONTAINS(@idList, c.id)",
  parameters: [
    { name: "@idList", value: idList }
  ]
}

内容的提问来源于stack exchange,提问作者Suklesh Rao

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.10 06:12:04