Я использую Angular на веб-интерфейсе и отправляю почтовый запрос на сервер, построенный с помощью Express.
Так выглядит код Angular:
addEntry() {
let type = "Random Type";
let location = "Random Location";
let date = new Date();
let results = [
{ name: "my first name", age: 23 },
{ name: "new second name", age: 35 },
];
return this.http.post<{ message: string }>(
this._url + "/myendpoint/add",
{ type, location, date, results }
);
}
А вот как выглядит код express:
router.post(
"/add",
middleware.verifyToken,
async function (req, res) {
const errors = validationResult(req);
if (!errors.isEmpty()) {
return res.status(422).json(errors.array());
}
try {
let userID = req.tokenData.userID;
let user = await User.findOne({ _id: userID });
if (user === null || user.length <= 0) {
return res.status(422).json("Could not add entry");
} else {
let type = req.body.type;
let location = req.body.location;
let date = req.body.date;
console.log(req.body);
let results = req.body.results.map(async (el) => {
let result = await Entry.findOne({ name: el.name });
return {
name: result.name,
age: el.age,
};
});
[some more code ...]
}
} catch (err) {
console.log(err);
return res.status(422).json(err);
}
}
);
Выводит журнал консоли :
{
type: 'Random Type',
centre: 'Random Location',
date: '2020-06-19T16:50:25.357Z',
results: '[object Object]'
}
И я также получаю эту ошибку, которая, вероятно, возникает из-за того, что результаты отображаются как '[object Object]';
TypeError: req.body.results.map is not a function
Как мне получить массив результатов в Express вместо '[объект Object]'? У меня в Express включены следующие настройки:
app.use(bodyParser.urlencoded({ extended: true }));
app.use(bodyParser.json());