[英]Select data from database depends on select value option in node and ejs
我是node.js的新人,用的是Express和EJS。 我想从 select 选项中获取 select 值,并基于来自 Postgres 数据库的该值 select 数据并在页面上呈现。 我怎样才能做到这一点? 这是我的代码:
EJS页面
<select name="company" class="form-control" id="companylist" onchange="getselectedvalue();">
<% for (const comp of model1) { %>
<option value='<%= comp.ic %>'><%= comp.name %></option>
<% } %>
</select>
服务器.js
app.get("/users/dashboard",checkNotAuthenticated, (req, res) => {
const sql = `select * from company a join accountscompany b on a.id = b.id_company join accounts c on b.id_accounts = c.id WHERE c.id = $1`
pool.query(sql, [req.user.id], (err, com) => {
console.log(req.isAuthenticated());
res.render('dashboard', {user: req.user, content:"header", model1: com.rows});
});
});
因此,例如:如果我必须在 select 选项值中将 select 值设为 1234,那么我的查询将是SELECT * FROM product WHERE company_ic = 1234
并呈现在我的页面上。
谢谢你的帮助
您应该在 app.get 之外创建池。 我会建议在它自己的文件中,然后您可以根据需要调用它。 我假设您使用的是 npm package mysql2
另外,我假设您的 sql 语法是正确的。 你没有给你的表作为参考。
require('dotenv').config();
const mysql = require('mysql2');
let pool = mysql.createPool({
host: "IP_ADDRESS",
user: "root",
password: process.env.DBPASSWORD,
database: "DBNAME",
waitForConnections: true,
connectionLimit: 20,
queueLimit: 0
});
const con = pool.promise();
module.exports = con;
然后在 app.get 之前是这样的
const bodyParser = require('body-parser')
const con = require('./mysqlPool.js')
app.use(bodyParser.urlencoded({ extended: true }))
然后在您的 function 中,您可以执行以下操作:
app.get("/users/dashboard",checkNotAuthenticated, async (req, res) => {
const com = await con.query('SELECT * FROM company a JOIN accountscompany b ON a.id = b.id_company JOIN accounts c ON b.id_accounts = c.id WHERE c.id = ?',[1234])
.then((result)=>{
return result[0];
});
res.render('dashboard', {user: req.user, content:"header", model1: com});
});
1234 在上面的例子中是硬编码的; 但是,您显然应该将 req.query.[your variable name] 变量放入其中。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.