강의

멘토링

커뮤니티

Cộng đồng Hỏi & Đáp của Inflearn

Hình ảnh hồ sơ của dudghks1176604
dudghks1176604

câu hỏi đã được viết

Hướng dẫn Express: API cốt lõi cho dịch vụ web

Tạo: thêm '_id' tùy chỉnh khoản trợ cấp

5:30초때 app.post 부분 에러가 나요

Viết

·

414

1

app.post('/post/upload', (req, res) => {
  counter
  .findOne({name: "counter"})
  .then((counterInfo) => {
    post
    .insertOne({
      _id: counterInfo.postNum,
      title: req.body.title,
      contents: req.body.contents,
      date : new Date()
    })
    .then(() => {
      counter
        .findOneAndUpdate(
          {name:"counter"},
          {
            $inc : {postNum: 1},
          }
        )
        .then(() => {
         res.redirect("/");
        });
    });
  })
  .catch((err) => {
    console.log(err);
    res.send("글 저장에 실패");
});
})
 
 
 
이렇게 했는데 에러가
node:internal/errors:464 ErrorCaptureStackTrace(err);
 
    at new NodeError (node:internal/errors:371:5)
    at ServerResponse.setHeader (node:_http_outgoing:576:11)
    at ServerResponse.header (D:\inflearn-express\node_modules\express\lib\response.js:776:10)
    at ServerResponse.location (D:\inflearn-express\node_modules\express\lib\response.js:893:15)
    at ServerResponse.redirect (D:\inflearn-express\node_modules\express\lib\response.js:931:18)
    at D:\inflearn-express\index.js:38:13
    at processTicksAndRejections (node:internal/process/task_queues:96:5) {
  code: 'ERR_HTTP_HEADERS_SENT'
}
[nodemon] app crashed - waiting for file changes before starting...
 
이렇게 나길래 찾아보니까 이미 응답을 보냈는데 한번더 응답을 보내려 할때 서버에서 충돌이 나서 오류가 나는거라고 하더라구요? 그래서 
res.redirect("/"); 여기를
return res.redirect("/");
이렇게 고치니까 에러가안나는데 맞는건가요???

express

Câu trả lời 1

0

pandacoding님의 프로필 이미지
pandacoding
Người chia sẻ kiến thức

아닙니다!

해당 api 규칙은 post doc를 저장하고, 저장 여부에 따라 응답을 한번만 실행하기에 응답을 중복해서 보낼 일이 없습니다. (말씀해주신 에러가 응답을 여러번 보낼 때 발생하는 에러는 맞습니다.)

return 구문을 통해 에러가 해결이 된 것은,

api를 응답과 동시에 요청을 끝내서 해결이 된 것 같습니다.

제 생각에는 현재 수강자분 코드에서 라우팅 규칙이 조금 꼬여있는 것 같은데,

크게 확인할 수 있는 에러가 없다면 상관 없겠지만 조금 찝찝하시다면

제가 코드를 확인할 수 있는 깃헙링크 첨부해주시면 확인해보도록 하겠습니다 :)

dudghks1176604님의 프로필 이미지
dudghks1176604
Người đặt câu hỏi

라우팅 규칙 꼬인게 맞는거 같아요!
뒷강의 수강하다가 다시 return 지우니까
에러가 안뜨네요 답변감사합니다

Hình ảnh hồ sơ của dudghks1176604
dudghks1176604

câu hỏi đã được viết

Đặt câu hỏi