Доступ к переменной EJS в теге скрипта

#javascript #node.js #express #ejs

Вопрос:

Я строю node.js приложение, и я хочу получить доступ к массиву с сервера, я обнаружил, что не могу получить доступ к массиву в теге сценария.

Я искал решения и нашел решение JSON.stringify , но оно не работает и возвращает ошибку.

На стороне сервера с помощью express:

 module.exports.index = async (req, res) => {
    const coffepoints = await CoffePoint.find({});
    res.render('coffepoints/index', { coffepoints })
}
 

Сторона клиента:

 <script> 
    const coffepoints = <% - JSON.stringify(campgrounds) %>
</script>
 

Что я должен сделать, чтобы получить доступ к массиву в теге сценария?

Ответ №1:

То , что вы здесь делаете, на самом деле называется includes , что для частичных в EJS.

 <script> const coffepoints = <% - JSON.stringify(campgrounds) %></script>
                               ^^^
 

Вы хотите отобразить или вывести переменную EJS. Итак, вы бы использовали <%= тег.

 <script> const coffepoints = <%= JSON.stringify(campgrounds) %></script>
 

Вы можете просмотреть документацию EJS здесь, которая включает все доступные теги в EJS.

Ответ №2:

Вы можете просто получить доступ к нему с <%= varName %> помощью функции » Из экспресс

 <script>
    var myVal = <%= someVal %>
</script>
 

Комментарии:

1. Это работает только в том случае, если someVal это число или логическое значение. Здесь, похоже, это не так.