Итак, я смотрел учебники о Firebase и создаю простое приложение, похожее на твиттер.
Со схемой screams
и comments
В моем createScreamComment моя проблемазаключается в том, что после подтверждения отсутствия документа scream
маршрут отправит статус 404 , который он сделал. Но он продолжает воздействовать и на другой возврат, который вызывает мой catch error
из-за [ERR_HTTP_HEADERS_SENT]: Cannot set headers after they are sent to the client
exports.commentOnScream
exports.commentOnScream = (req, res) => {
if (req.body.body.trim() === '')
return res.status(400).json({ comment: 'Must not be empty' });
const newComment = {
body: req.body.body,
createdAt: new Date().toISOString(),
screamId: req.params.screamId,
userHandle: req.user.handle,
userImage: req.user.imageUrl
};
db.doc(`/screams/${req.params.screamId}`)
.get()
.then((doc) => {
if (!doc.exists) { // triggering success stop here
return res.status(404).json({ error: 'Scream not found' });
} else {
return doc.ref.update({ commentCount: doc.data().commentCount + 1 });
}
})
.then(() => { // dont know why this is getting triggered already sent a 404 response
return db.collection('comments').add(newComment);
})
.then(() => { // dont know why this is getting triggered already sent a 404 response
return res.json(newComment);
})
.catch((err) => {
console.log(err);
return res.status(500).json({ error: 'Something went wrong' });
});
};