【发布时间】:2019-08-09 06:10:02
【问题描述】:
我目前正在使用 node.js 创建一个网页,该网页对 MySQL 数据库进行查询并将结果显示在表格中。
我希望页面在初始加载时显示数据库中的所有数据,但我还想实现一个过滤器,用户可以在其中填写一些字段,当按下提交按钮时,将使用页面上显示的输入和结果。
这是我到目前为止的代码:
在“app.js”中,我与数据库建立连接并将其呈现到页面:
var connection = mysql.createConnection({
// make connection
host: ...,
user: ...,
password: ...,
database: ...
});
connection.connect();
//routes
app.get("/", function(req, res){
var cmd = `SELECT * FROM myTable`;
connection.query(cmd, function(err, result, fields) {
if (err) throw err;
res.render('home', {result: result});
});
});
在 home.ejs 中,我遍历结果中的每个条目以在表中创建一行:
<table>
<tr>
<th> ... </th>
.
.
.
</tr>
<% result.forEach(function(entry) { %>
<tr>
<td><%= entry.column1 %></td>
.
.
.
</tr>
<% }) %>
</table>
所以第一部分似乎正在工作(在初始加载时显示数据库中的所有数据),但我正在努力完成第二部分,因为我之前没有 Web 开发经验。
我目前在页面中有一个接受用户输入和一个关联的表单。但是,我不确定如何使用 myFunction() 中的用户输入对数据库执行另一个查询,以及如何用新查询的结果替换表的当前内容。
任何帮助将不胜感激!
【问题讨论】:
-
当您说您将加载所有数据时,您的“过滤器”提交是否真的需要再次往返后端?我认为您的过滤器只会过滤客户端已经拥有的数据?您能否详细说明过滤器的作用?
-
@MatthewHarwood 实际上我从没想过这一点,但是是的,您是对的,不必进行另一个查询。我只是从初始完整结果中过滤掉不符合要求的数据。
-
嘿,伙计,您的问题中缺少一些内容,但我认为我的方法对您有用。关于模板化客户端和过滤数据可能会有很多后续问题。这些可能更适合作为单独的 stackoverflow 问题,但留下它们,我会帮助指导你。
标签: javascript html node.js