【问题标题】:Send data with Javascript function in Express response在 Express 响应中使用 Javascript 函数发送数据
【发布时间】: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) =&gt; {});

  1. 我能否以某种方式将参数设置为 script.js 函数并使用 res.send(functionName(idList)) 调用该函数?

  2. 我已经看到使用 res.render 在 html 视图中发送模板的答案,但是在 JS 和 HTML 中都需要数据的情况下,如何使用这样的解决方案?

  3. 我有很多其他路线没有使用模板引擎。如果这是解决方案,我可以将其仅用于一条路线吗?

我对这一切都很陌生,基本上是在寻求解决方案。所以我上面的一些问题可能是基本的。

【问题讨论】:

    标签: javascript node.js express


    【解决方案1】:

    使用 ejs,您可以将字符串传递给 EJS 模板或 .js 文件。但是,您只能传递字符串。您可以做的是使用 JSON.stringify(obj) 将对象作为字符串传递,然后使用 JSON.parse(obj) 将其转换回来。

    这是另一个包含一些代码并且可能会有所帮助的答案:How to include external .js file to ejs Node template page

    【讨论】:

      猜你喜欢
      • 2014-02-10
      • 1970-01-01
      • 1970-01-01
      • 2014-06-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-02-08
      • 2015-12-08
      相关资源
      最近更新 更多