Отправка данных с функцией Javascript в ответ Express - PullRequest
0 голосов
/ 27 сентября 2019

Я хочу отправить ответ приложения / javascript с моего сервера Express, передавая данные, полученные от 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) => {});

  1. Можно ли как-то установить параметры для функции script.js и вызвать функцию с помощью res.send (functionName (idList))?

  2. Я видел ответы сшаблоны отправляются в html-представлениях с помощью res.render, но как мне использовать такое решение в моем случае, когда требуются данные как в JS, так и в HTML?

  3. У меня много других маршрутовкоторые не используют шаблонизатор.Могу ли я использовать его только для одного маршрута, если это решение?

Я очень новичок во всем этом и по сути взломал решение.Поэтому некоторые из моих вопросов выше могут быть элементарными.

1 Ответ

0 голосов
/ 27 сентября 2019

Используя ejs, вы можете передать строку в шаблон EJS или файл .js.Однако вы можете передавать только строки.Что вы можете сделать, это передать объект в виде строки, используя JSON.stringify (obj), а затем использовать JSON.parse (obj), чтобы преобразовать его обратно.

Вот еще один ответ, который содержит некоторый код и может помочь: Как включить внешний файл .js на страницу шаблона узла ejs

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...