У меня есть конечная точка API, где пользователь может указать идентификатор коллекции, которую он хочет удалить. Маршрутизатор читает файл json, перебирает коллекции и удаляет найденную запись:
router.delete('/todos/:id', (req,res)=>{
const id = req.params.id
fs.readFile('todos.json', 'utf8', (err,data) =>{
if (err) throw err
const JSONdata = JSON.parse(data)
JSONdata.todos.forEach((todo, index)=>{
if(todo.id == id){
JSONdata.todos.splice(index,1)
fs.writeFile('todos.json',JSON.stringify(JSONdata), 'utf8', (err) =>{
if (err) throw err
return res.json({"deleted" : true})
})
}
})
})
res.status(404).json({errors: ['task not found']})
})
Однако вместо правильного ответа {"удалено": true} я получаю эту ошибку:
Сервер работает на порту 3000 _http_outgoing. js: 470 сгенерировать новый ERR_HTTP_HEADERS_SENT ('set'); ^
Ошибка [ERR_HTTP_HEADER
Я знаю, что это связано с асинхронной природой узла. Но я был уверен, что добавление ключевого слова return, если l oop найдет указанную c запись, заставит его работать. Как я могу это исправить?