Проблема по всей видимости в том, что middleware асинхронный, а об окончании его выполнения нет оповещения (не вызывается
next()
).
Вариант 1. Либо уберите
async
- он, судя по синхронной работе содержимого, тут не нужен:
router.put('/', (req, res) => {
const {id} = req.body;
console.log(id);
res.send(id);
});
Вариант 2. Еслии все таки планируется какая-то асинхронная работа внутри middleware, тогда используйте next(), чтобы объявить окончание выполнения асинхронного middleware
router.put('/', async (req, res, next) => {
const {id} = req.body;
console.log(id);
res.send(id);
next();
});
UPD1: В клиентской части при обращении к /api не передается заголовок "content-type", соответствующий передаваемому body.
Должно быть так:
fetch('http://localhost:5000/api', {
method: 'PUT',
headers: {
'Content-Type': 'application/json',
},
body: JSON.stringify({
"id": "2"
})
})
UPD2: как верно подметил
Игорь Махов - console.log в res.send вам вряд ли нужен.