NodeJs и Ejs передают массивы на страницу

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

var test ="<%= data %>";
console.log(test);

Я получаю вывод

[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object

Console.log в файле nodejs работает нормально, но когда я пытаюсь запустить его на стороне клиента console.log, он портится.

1 ответ

Решение

Проблема, вероятно, с <%= data %>, скорее, чем console.log(), Если вы проверите результат на стороне клиента, вы, вероятно, увидите:

var test ="[object Object],[object Object],[object Object],...";

Когда вы просто печатаете ArrayДостоевский .join() элементы, вызывающие .toString() на каждой. И:

new Object().toString() === "[object Object]"

Для вывода данных, чтобы их можно было использовать, вы можете использовать JSON.stringify():

var test = <%- JSON.stringify(data) %>;

Это использует преимущества синтаксиса JSON, основанного на синтаксисе JavaScript, для выводаArray буквальный изObject литералы:

var test = [{"prop":"value"},...];
Другие вопросы по тегам