Solucionado (ver solução)
Solucionado
(ver solução)
4
respostas

url invalida retorna status 200

ao acessar a url http://localhost:3000/livros/form/sds tenho como retorno um status 200 como view engine estou usando o handlebars

livro-dao

  findById(id){
    return new Promise((resolve,reject) => {
      this._db.get(
        ` select * from books where id = ?`, 
        [id],
        (error, book) => {
          if(error){
            console.log('errro search')
            return reject('nao foi possivel achar o livro ')
          }
          console.log('book found', book)
          return resolve(book)
        }
      )
    })
  }

routes.js

app.get('/livros/form/:id', (req,res) => {
      const id = req.params.id
      const bookDao = new BookDao(db)

      bookDao.findById(id)
      .then(book => {
        res.render('books/form', { book: book })
      })
      .catch(error => console.log(error))
    })
4 respostas
solução!

Fala aí Davi, tudo bem? Você precisa verificar se não encontrou um book para que seja retornado um erro 404 ou qualquer outro:

bookDao.findById(id)
    .then(book => {
        if (!book) {
            // trata o 404 aqui
        }
        return res.render('books/form', { book: book })
    }).catch(error => console.log(error))})

Espero ter ajudado.

ok obrigado Matheus. Acabei optando por retornar o reject caso o livro nao exista. Creio que seja uma opção também.


  findById(id){
    return new Promise((resolve,reject) => {
      this._db.get(
        ` select * from books where id = ?`, 
        [id],
        (error, book) => {
          if(error || !book){
            return reject('nao foi possivel achar o livro ')
          }
          console.log('book found', book)
          return resolve(book)
        }
      )
    })
  }
 edit(){
    return (req, res) => {
      const id = req.params.id
      const bookDao = new BookDao(db)

      bookDao.findById(id)
        .then(book => {
          res.render('books/form', { book: book })
        })
        .catch(error => {
          console.log(error)
          res.render('404')
        })
    }
  }

Opa, Davi! Como vai?

Sim, essa também é uma possibilidade! Muito boa a sua solução e obrigado por compartilhar aqui com a gente! Continue assim!

Espero que esteja curtindo e aproveitando ao máximo todo o conteúdo dos cursos de Node!

Grande abraço e bons estudos, meu aluno!

Sim Davi, também é uma opção, esse tratamento pode ser feito de N maneiras, creio que achou a melhor para seu cenário.

Sempre que precisar não deixe de criar suas dúvidas.

Abraços e bons estudos.