1
resposta

Não consigo printar na tela dos dados cadastrados pelo cliente

O erro que ocorre no terminal é o seguinte: { [Error: SQLITE_CONSTRAINT: NOT NULL constraint failed: livros.titulo] errno: 19, code: 'SQLITE_CONSTRAINT' } Não foi possível adicionar o livro

O código livro-dao.js abaixo:

class LivroDao {
    constructor(db) {
        this._db = db
    }

    adiciona(livro) {                                                   //adiciona é um código voltado para inserção. 
        return new Promise((resolve, reject ) => {
            this._db.run(`
                INSERT INTO livros (
                    titulo,
                    preco,
                    descricao
                ) values(?,?,?)
                `,
                [
                    livro.titulo,
                    livro.preco,
                    livro.descricao
                ],
                function(err) {
                    if (err) {
                        console.log(err)
                        return reject('Não foi possível adicionar o livro')
                    }
                    resolve()
                }
            )
        })

    }

    lista() {
        return new Promise((resolve, reject) => {
            this._db.all(
                'SELECT * FROM livros',
                (erro, resultados)  => {
                    if (erro) return reject('Não foi possível listar os livros')

                    return resolve(resultados)

                }
            )
        })

    }
}

module.exports = LivroDao

Colocarei também o código do rotas.js:

const LivroDao = require('../infra/livro-dao')
const db = require('../../config/database')                                 // Importando o Banco de Dados
const listaMarko = require('../views/livros/listagem/lista.marko')

//Abaixo criei uma arrow function que pode ser exportada com as rotas de verificação do programa. 
module.exports = app => {
    app.get('/', function (req,resp) {                                           
        resp.send(                                                                
            `<html>
                <head>
                    <title>Novo Teste de Servidor</title>
                </head>
                <body>
                    <h1>HOMEPAGE</h1>
                </body>
            </html>`
        )
    }) 

    app.get('/livros', function (req,resp) {       

        const livroDao = new LivroDao(db)
        livroDao.lista() 
            .then(livros => resp.marko(                                                   // .marko é a bilioteca instalada na máquina                                               
                require('../views/livros/listagem/lista.marko'),                          //importando o arquivo.marko
                {
                    livros: livros
                }
            ))
            .catch(erro => console.log(erro))

    })

    app.get('/livros/form', function(req,resp) {
        resp.marko(require('../views/livros/form/form.marko'))
    })


    app.post('/livros', function(req,resp) {
        console.log(req.body)
        const livroDao = new LivroDao(db)
        livroDao.adiciona(req.body) 
                .then(resp.redirect('/livros'))
                .catch(erro => console.log(erro))
    })
}
1 resposta

Oi, Lucas, tudo bem?

Eu testei os trechos dos códigos acima com o projeto base do curso. Eu tive um erro como nome da pasta listagem pois no projeto do curso está como lista, mas colocando como no projeto, não tive o mesmo erro que você.

Se preferir, compartilha teu projeto ou no google drive ou no github pra que possa baixar e testar como tá fazendo na sua máquina.