检查快速请求数据是否是数组

我正在使用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访问请求的单个请求的req.body ,我可以检索数据就好(这只是一个常规的JSON对象)。 但是,当我发送数组时,我发现数据被parsing为对象(?)而不是数组。

 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 } 

只是个人喜好,你使用哪一个。