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))
})
}