返回值是对象而不是数组,Node.js 和 Postman
Returned value is an object and not an array, Node.js and Postman
所以我正在尝试一个非常简单的查询,如下所示:
JSON Postman 的输入
{
"id" : ["M","N"]
}
我想从 Cosmos DB 服务器取回多个 ID,所以我使用了一个包含许多 ID 的数组。
现在这是我的 API 的开始,我从用户那里获取数据:
let c_id: any = req.body.id;
console.log(c_id)
console.log(typeof(c_id))
//let c_id1 = JSON.parse(c_id)
//console.log(c_id1)
//console.log(typeof(c_id1))
现在我期望从 Postman 返回的是数组,但我一直返回一个对象。
更让我困惑的是 console.log(c_id)
语句将其作为对象打印出来
console.log输出
[ 'M', 'N' ] //console.log(c_id) output
object //console.log(typeof(c_id)) output
我不明白这里到底发生了什么。如何将数据作为数组取回?
重现问题的步骤:
- 只需在 Postman 上创建一个带有键值对的 POST 请求,其中数组是值
- 在您的 API 中创建对 id 的请求并在控制台记录输出
我尝试过的:
- 因为它给我返回一个对象,我尝试解析它但返回错误。
位置 0 JSON 中的意外标记 M 语法错误:JSON 中位置 0
中的意外标记 M
- 我尝试使用 just 作为数组,但没有得到预期的输出。
in javaScript typeof array is object for check array you can use Array.isArray
示例:
Array.isArray(["M","N"]); // true
这是应该的。数组是对象。您甚至可以在浏览器的控制台中尝试:
const a = [1,2,3];
console.log(typeof(a));
或者只是:
console.log(typeof([1,2,3]));
这些将在控制台中产生相同的结果,即 'object'
查看运算符 typeof 的工作原理。由于数组和其他非基元 (Maps, Sets, Date objects, RegExps) 从 Object class 继承,typeof 运算符在您的情况下产生正确的结果。
如果您需要检查您是否正在获取数组,您可以检查您的对象是否具有仅属于所需对象类型的方法或属性,例如:
typeof([].length) == 'number'
所以我正在尝试一个非常简单的查询,如下所示:
JSON Postman 的输入
{
"id" : ["M","N"]
}
我想从 Cosmos DB 服务器取回多个 ID,所以我使用了一个包含许多 ID 的数组。
现在这是我的 API 的开始,我从用户那里获取数据:
let c_id: any = req.body.id;
console.log(c_id)
console.log(typeof(c_id))
//let c_id1 = JSON.parse(c_id)
//console.log(c_id1)
//console.log(typeof(c_id1))
现在我期望从 Postman 返回的是数组,但我一直返回一个对象。
更让我困惑的是 console.log(c_id)
语句将其作为对象打印出来
console.log输出
[ 'M', 'N' ] //console.log(c_id) output
object //console.log(typeof(c_id)) output
我不明白这里到底发生了什么。如何将数据作为数组取回?
重现问题的步骤:
- 只需在 Postman 上创建一个带有键值对的 POST 请求,其中数组是值
- 在您的 API 中创建对 id 的请求并在控制台记录输出
我尝试过的:
- 因为它给我返回一个对象,我尝试解析它但返回错误。
位置 0 JSON 中的意外标记 M 语法错误:JSON 中位置 0
中的意外标记 M- 我尝试使用 just 作为数组,但没有得到预期的输出。
in javaScript typeof array is object for check array you can use Array.isArray
示例:
Array.isArray(["M","N"]); // true
这是应该的。数组是对象。您甚至可以在浏览器的控制台中尝试:
const a = [1,2,3];
console.log(typeof(a));
或者只是:
console.log(typeof([1,2,3]));
这些将在控制台中产生相同的结果,即 'object'
查看运算符 typeof 的工作原理。由于数组和其他非基元 (Maps, Sets, Date objects, RegExps) 从 Object class 继承,typeof 运算符在您的情况下产生正确的结果。
如果您需要检查您是否正在获取数组,您可以检查您的对象是否具有仅属于所需对象类型的方法或属性,例如:
typeof([].length) == 'number'