【发布时间】:2019-09-27 16:25:38
【问题描述】:
我想从我的 Express 服务器发送一个应用程序/javascript 响应,传递我从 MongoDB 获得的数据。
这是对加载第三方网站的呼吁的回应。
我已经创建了流程的所有不同部分,现在只需将数据传递到 Javascript 响应中。
server.js
app.get('/', (req, res) => {
productInfo(param1, param2, res)
}
productInfo.js - MongoDB 调用
function productInfo(param1, param2, res){
Product.find({key1: param1}, (err, docs) => {
let idList = docs.idList;
res.set('Content-Type', 'application/javascript');
res.sendFile(__dirname + '/script.js', (err) => {
if (err) { console.log(err) }
else { console.log('file sent') }
});
}
module.exports = productInfo;
script.js - 发送一个自执行匿名函数
(function(){
// function - load jQuery & Bootstrap in 3rd party website
$masterDiv = $(`
<div>
...
... *data required*
</div>
`)
$('body').append($masterDiv);
// function - jquery event handlers where *data is required*
})();
当第三方网站页面上发生某些事件时,事件处理程序会更新正确的数据 (id)。
如何将数据 (idList) 传递给 script.js?
如果我在 (function(){})(); 之前设置虚拟全局变量数据script.js 中的行,然后我可以在函数中访问它。
我尝试了 res.render,但它显示“找不到模块 'js'”。
res.render(__dirname + '/scriptproduct.js', (err) => {});
我能否以某种方式将参数设置为 script.js 函数并使用 res.send(functionName(idList)) 调用该函数?
我已经看到使用 res.render 在 html 视图中发送模板的答案,但是在 JS 和 HTML 中都需要数据的情况下,如何使用这样的解决方案?
我有很多其他路线没有使用模板引擎。如果这是解决方案,我可以将其仅用于一条路线吗?
我对这一切都很陌生,基本上是在寻求解决方案。所以我上面的一些问题可能是基本的。
【问题讨论】:
标签: javascript node.js express