Я работаю над сервером API Express 3.x (не спрашивайте, почему я не обновляюсь до 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]
Учитывая это, есть ли гарантированный способ проверить, являются ли мои данные массивом?