检查 Express 请求数据是否为数组
Check if Express request data is array
我正在使用 Express 3.x API 服务器(不要问我为什么不升级到 4.x;我无法控制它) ,并且我正在尝试实现对特定端点的批处理请求的支持。该端点目前支持常规请求(采用 JSON 对象),但我希望它也能够采用 JSON 对象数组,例如:
POST /api/posts
Body:
[
{ "title": "Hello World", "text": "blah blah" },
{ "title": "Hello World 2", "text": "blah blah blah" }
]
当我尝试使用 req.body
访问单个请求的请求主体时,我可以很好地检索数据(它只是一个常规的 JSON 对象)。但是,当我发送一个数组时,我发现数据被解析为对象对象(?)而不是数组。
req.body = { "title": "Hello World", "text": "blah blah" };
typeof req.body;
// object
req.body.toString();
// [object Object]
req.body = [
{ "title": "Hello World", "text": "blah blah" },
{ "title": "Hello World 2", "text": "blah blah blah" }
];
typeof req.body;
// object
req.body.toString();
// [object Object],[object Object]
我试过使用这样的简单检查:
if (req.body.toString() !== '[object Object]') {
但是只包含一个对象的数组打破了这一点。例如:
req.body = [{ "title": "Hello World", "text": "blah blah" }];
typeof req.body;
// object
req.body.toString();
// [object Object]
鉴于此,是否有保证的方法来检查我的数据是否为数组?
在任何 JavaScript 环境中执行此操作的典型方法是:
if ( req.body instanceof Array ) {
// do stuff
}
但是由于您在 V8 中拥有 JavaScript 运行 的奢侈,您也可以毫无问题地使用以下内容:
if ( Array.isArray(req.body) ) {
// do stuff
}
个人喜欢用哪个。
我正在使用 Express 3.x API 服务器(不要问我为什么不升级到 4.x;我无法控制它) ,并且我正在尝试实现对特定端点的批处理请求的支持。该端点目前支持常规请求(采用 JSON 对象),但我希望它也能够采用 JSON 对象数组,例如:
POST /api/posts
Body:
[
{ "title": "Hello World", "text": "blah blah" },
{ "title": "Hello World 2", "text": "blah blah blah" }
]
当我尝试使用 req.body
访问单个请求的请求主体时,我可以很好地检索数据(它只是一个常规的 JSON 对象)。但是,当我发送一个数组时,我发现数据被解析为对象对象(?)而不是数组。
req.body = { "title": "Hello World", "text": "blah blah" };
typeof req.body;
// object
req.body.toString();
// [object Object]
req.body = [
{ "title": "Hello World", "text": "blah blah" },
{ "title": "Hello World 2", "text": "blah blah blah" }
];
typeof req.body;
// object
req.body.toString();
// [object Object],[object Object]
我试过使用这样的简单检查:
if (req.body.toString() !== '[object Object]') {
但是只包含一个对象的数组打破了这一点。例如:
req.body = [{ "title": "Hello World", "text": "blah blah" }];
typeof req.body;
// object
req.body.toString();
// [object Object]
鉴于此,是否有保证的方法来检查我的数据是否为数组?
在任何 JavaScript 环境中执行此操作的典型方法是:
if ( req.body instanceof Array ) {
// do stuff
}
但是由于您在 V8 中拥有 JavaScript 运行 的奢侈,您也可以毫无问题地使用以下内容:
if ( Array.isArray(req.body) ) {
// do stuff
}
个人喜欢用哪个。