英文:
Cannot read properties of undefined (reading 'findAll')
问题
我正在尝试从我的MySQL数据库导入数据到我的index.ejs文件,但它一直报错,我尝试过纠正它,但无法成功,我的index.ejs文件无法识别ejs语法。
这是用express生成路由的文件:
const express = require('express');
const app = express();
const fs = require('fs');
const db = require('./models/db');
const path = require('path');
// 设置视图文件夹的路径
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'ejs');
// 使用静态文件(CSS、JS等)
app.use(express.static(path.join(__dirname, "public")));
// 发送数据到前端
app.get("/", async (req, res) => {
try {
const usuario = await db.usuario.findAll();
res.render('index', { usuario });
} catch (error) {
console.error('Error fetching products:', error);
res.status(500).send('Internal Server Error');
}
});
// 接收数据并发送到数据库
app.post("/imput", async (req, resp) => {
res.send;
});
// 监听本地8080端口
app.listen(8080, () => {
console.log("Server started on port 8080: http://localhost:8080");
});
这是我的index.ejs文件的部分内容:
<!-- ... -->
<label for="responsavel">Responsável:</label>
<select name="responsavel" id="responsavel" autofocus >
<% usuario.forEach( (usuario) => { %>
<option value="<%= usuario.id %>"><%= usuario.nome %></option>
<% }); %>
</select>
<!-- ... -->
我希望数据能够加载到选择框中。
英文:
I'm trying to import data from my mysql database to my index.ejs file, but it keeps giving me several errors, I've tried to correct it and I couldn't, my index.ejs file is not recognizing the ejs syntax.
this is my file to generate the routes with express
const express = require('express');
const app = express();
const fs = require('fs');
const db = require('./models/db');
const path = require('path');
//para colocar conteúdo dinâminco no html
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'ejs');
//para utilizar arquivos estáticos no node (css, js)
app.use(express.static(path.join(__dirname,"public")));
//manda infos para o front
app.get("/", async (req, res) => {
try{
const usuario = await db.usuario.findAll();
res.render('index', { usuario });
}
catch (error) {
console.error('Erro ao buscar produtos:', error);
res.status(500).send('Erro interno do servidor');
}
});
//recebe infos e manda para o banco de dados
app.post("/imput", async (req, resp) => {
res.send
})
//se conecta a porta 8080 do localhost
app.listen(8080, () => {
console.log("servidor iniciado na porta 8080: http://localhost:8080");
});
and this is my index.ejs
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Cadastro</title>
<link rel="shortcut icon" href="https://engixelevadores.com.br/public/template/assets/images/favicon/favicon.png" type="image/x-icon">
<link rel="stylesheet" href="./style/style.css">
<script src="script.js"> </script>
</head>
<body>
<div class="container">
<h1>Cadastro</h1>
<!--Forms de cadastro de infos dos clientes, utilizando de uma api para facilitar o preenchimento do endereço-->
<form id="addresForm" action="/submit" method="post">
<div class="infos1">
<label for="codigo">Código: <br></label>
<input type="text" name="codigo" id="codigo" required>
<br>
<label for="nome">Nome: <br></label>
<input type="text" name="nome" id="nome" required>
<br>
<label for="cpf_cnpj">CPF/CNPJ: <br></label>
<input type="number" name="cpf_cnpj" id="cpf_cnpj" placeholder="Apenas números">
<br>
<label for="pf_pj">Tipo: <br></label>
<label>
<input type="radio" name="pf_pj" id="pf_pj" value="pf">
PF
</label>
<label>
<input type="radio" name="pf_pj" id="pf_pj" value="pj">
PJ
<br><br>
</label>
<label for="onde_encontrou_emp">Como conheceu a Engix? <br></label>
<label for="onde_encontrou_emp">
<input type="radio" name="onde_encontrou_emp" id="onde_encontrou_emp" value="Indicação">
Indicação
<br>
</label>
<label for="onde_encontrou_emp">
<input type="radio" name="onde_encontrou_emp" id="onde_encontrou_emp" value="Redes Sociais">
Redes Sociais
<br>
</label>
<label for="onde_encontrou_emp">
<input type="radio" name="onde_encontrou_emp" id="onde_encontrou_emp" value="Google">
Google
<br>
</label>
<label for="onde_encontrou_emp">
<input type="radio" name="onde_encontrou_emp" id="onde_encontrou_emp" value="Google">
Comercial
<br>
</label>
<label for="onde_encontrou_emp">
<input type="radio" name="onde_encontrou_emp" id="onde_encontrou_emp" value="Outro">
Outros
<input type="text" name="onde_encontrou_emp" id="onde_encontrou_emp">
</label>
</div>
<div class="infos2">
<!--Chama a function pesquisacep que está no arquivo script.js, ela fará a consulta em um banco de dados externo e autocompletará os campos abaixo-->
<label for="cep">CEP: <br></label>
<input type="text" name="cep" id="cep" size="15" maxlength="9" onblur="pesquisacep(this.value);" placeholder="Apenas números">
<br>
<label for="rua">Rua: <br></label>
<input type="text" name="rua" id="rua" size="50">
<br>
<label for="numero">Numero: <br></label>
<input type="text" name="numero" id="numero" size="50">
<br>
<label for="bairro">Bairro: <br></label>
<input type="text" name="bairro" id="bairro" size="50">
<br>
<label for="cidade">Cidade: <br></label>
<input type="text" name="cidade" id="cidade" size="50">
<br>
<label for="uf">UF: <br></label>
<input type="text" name="uf" id="uf" size="50">
</div>
<div class="infos3">
<label for="contato_cliente">Nome do contato: <br></label>
<input type="text" name="contato_cliente" id="contato_cliente">
<br>
<label for="telefone">Nº Telefone fixo: <br></label>
<input type="tel" name="telefone" id="telefone" placeholder="Apenas números">
<br>
<label for="celular">Nº Celular: <br></label>
<input type="tel" name="celular" id="celular" placeholder="Apenas números">
<br>
<p>Se não houver DDD, ele será <br> definido automaticamente como (51)</p>
</div>
<div class="infos4">
<label for="responsavel">Responsável:</label>
<select name="responsavel" id="responsavel" autofocus >
** <% usuario.forEach( => { %>
<option value="<%= usuario.id %>"><%= usuario.nome %></option>
<% }); %>**
</select>
<br>
<label for="tipo_equipamento">Tipo de equipamento:</label>
<select name="tipo_equipamento" id="tipo_equipamento" autofocus >
<option value="PNE">PNE</option>
<option value="Elevador Comercial">Elevador Comercial</option>
<option value="Elevador Residencial">Elevador Residencial</option>
<option value="Não informado">Não informado</option>
</select>
<br>
<label for="tipo_equipamento">Tipo de equipamento:</label>
<select name="tipo_equipamento" id="tipo_equipamento" autofocus >
<option value="PNE">PNE</option>
<option value="Elevador Comercial">Elevador Comercial</option>
<option value="Elevador Residencial">Elevador Residencial</option>
<option value="Não informado">Não informado</option>
</select>
</div>
</form>
</div>
</body>
</html>
was for the data to be loaded in the select
答案1
得分: 0
从您提供的代码来看,似乎您正试图渲染index.ejs文件并将usuario数据传递给它。但是,看起来在您的index.ejs文件中存在语法问题,您尝试对usuario数组进行迭代。
当前:
<% usuario.forEach( => { %>
<option value="<%= usuario.id %>"><%= usuario.nome %></option>
<% }); %>
修正:
<% usuario.forEach((user) => { %>
<option value="<%= user.id %>"><%= user.nome %></option>
<% }); %>
英文:
From the code you provided, it seems like you are trying to render the index.ejs file and pass the usuario data to it. However, it looks like there is an issue with the syntax in your index.ejs file where you're trying to iterate over the usuario array.
Current:
<% usuario.forEach( => { %>
<option value="<%= usuario.id %>"><%= usuario.nome %></option>
<% }); %>
Fixed
<% usuario.forEach((user) => { %>
<option value="<%= user.id %>"><%= user.nome %></option>
<% }); %>
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论