我试图用MongoDB集合中的数据填充索引HTML中的下拉列表。我已经填充了如下代码:
<script>
document.addEventListener("DOMContentLoaded", function() {
for (element in mongoData){
var option = document.createElement('option');
option.innerHTML = element;
option.value = element;
document.getElementById('Active_Sessions').append(option);
}
});
</script>
而在app.js中,我的路线如下:
app.use("/",(req,res) => {
res.sendFile(__dirname + "/index.html")
})
我需要将json对象“mongodata”传递给这个html,但不知道如何实现。“mongodata”将是从给定集合收集的某些数据的json。
我想到但还没有实现的一个解决方案是将这个mongodata写入app.js中的文本文件或csv文件或类似文件,然后从我的填充脚本读入该文件。我觉得这是一个糟糕的形式,虽然不是很安全。
我想到的另一个方法是尝试在填充脚本中连接到Mongoose服务器,但是当我尝试这个方法时,它不起作用,所以我认为这是不可能的。
在发布这篇文章之前,我已经研究过使用res.render()发送json,但我并不真正理解什么是模板化,如果可以避免的话,我宁愿不必了解所有这些。
有什么好的解决办法吗?
最佳答案
您可以在服务器中更改数据(如通过模板引擎)。
或者你也可以做一些类似的事情。虚拟逻辑:
使用fs模块读取文件。
使用regex替换/插入内容(例如从对象)。
将结果发送给客户端。
更新:自定义模板引擎的一个简单示例。
首先是一个简单的html文件-index.html(请注意$replace\u me):
<html>
<body>
<div class="circle">
$replace_me
<div class="square">
something else
</div>
</div>
<body>
</html>
在我们的节点服务器中,我们可以这样做:
var fs = require('fs');
//used sync for clean demo, use async in production
var _html_cont = fs.readFileSync('index.html', {encoding: 'utf-8'});
//dynamic content to replace
var _repl = "<div>I am new!</div>";
//actually replace it
var _im_regex = new RegExp("\\$replace_me", "gm");
_html_cont = _html_cont.replace(_im_regex, _repl);
//send result to client
res.writeHead(200, { 'content-type': 'text/html' });
res.write(_html_cont);
res.end();
关于javascript - 如何将JSON数据从Node js路由传递到html文件中的脚本?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/50245795/