Bom dia, estou com o seguinte erro !
Error: Render error. Exception: TypeError: Cannot read property 'id' of undefined
at render (C:\Users\Brickes\Documents\Estudos\ALURA\Nodejs\src\app\View\Livros\Form\Form.marko.js:25:41)
at renderer (C:\Users\Brickes\Documents\Estudos\ALURA\Nodejs\node_modules\marko\src\runtime\components\renderer.js:227:9)
at safeRender (C:\Users\Brickes\Documents\Estudos\ALURA\Nodejs\node_modules\marko\src\runtime\renderable.js:6:9)
at Template.render (C:\Users\Brickes\Documents\Estudos\ALURA\Nodejs\node_modules\marko\src\runtime\renderable.js:136:20)
at ServerResponse.response.marko (C:\Users\Brickes\Documents\Estudos\ALURA\Nodejs\node_modules\marko\src\express.js:58:29)
at C:\Users\Brickes\Documents\Estudos\ALURA\Nodejs\src\app\Routes\rotas.js:50:29
at AsyncStream.error (C:\Users\Brickes\Documents\Estudos\ALURA\Nodejs\node_modules\marko\src\runtime\html\AsyncStream.js:441:13)
at Timeout._onTimeout (C:\Users\Brickes\Documents\Estudos\ALURA\Nodejs\node_modules\marko\src\runtime\renderable.js:17:22)
at listOnTimeout (internal/timers.js:531:17)
at processTimers (internal/timers.js:475:7)
Arquivo Dão
buscarporId(body)
{
return new Promise((resolve, reject) =>
{
this._instanciadb.get(`SELECT * FROM Livros WHERE id =?`,
[body],
(erro, dados) =>
{
if(erro)
{
return reject(console.log(erro));
}
return resolve(dados);
}
);
});
}
Rotas js
app.get('/livros/form/:id', (req, res)=>{
const id = req.params.id;
console.log(id);
livroDao.atualizar(id)
.then(livros => res.marko(require('../View/Livros/Form/Form.marko'),
{
livro: livros
}
)
)
.catch(erro => console.log("Deu Erro"+erro));
});
Marko
<html>
<body>
<h1>Cadastro de livros</h1>
<form action="/livros" method="post">
<input type="hidden" id="id" name="id" value="${data.livro.id}" />
<div>
<label for="titulo">Titulo:</label>
<input type="text" id="titulo" name="titulo" value="${data.livro.titulo}" placeholder="coloque o titulo" />
</div>
<div>
<label for="preco">Preço:</label>
<input type="text" id="preco" name="preco" value="${data.livro.preco}" placeholder="150.25" />
</div>
<div>
<label for="descricao">Descrição:</label>
<textarea cols="20" rows="10" id="descricao" name="descricao" placeholder="fale sobre o livro">${data.livro.descricao}</textarea>
</div>
<input type="submit" value="Salvar" />
</form>
</body>
</html>