Как исправить javascript внешнего интерфейса в руле, ловя неопределенное значение с сервера? - PullRequest
1 голос
/ 26 сентября 2019

У меня есть объект JSON в бэкэнде, который я хочу отправить в javascript-интерфейс.Но я постоянно сталкиваюсь с «неопределенным» при попытке доступа к этой переменной.

кандидатов является объектом json и отлично работает на стороне сервера.

Вот мой код на стороне сервера.

res.render('electionview',{title: 'Election', poll: poll, data: JSON.stringify(candidates) });

Вот мой сценарий на руле

<script type="text/javascript">
var candidates = {{{data}}};
console.log(candidates);
<script>

Но я получаю эту ошибку в консоли.

Uncaught SyntaxError: неожиданный токен ';'

Когда я удаляю точку с запятой, вывод на консоль будет undefined .Чего мне не хватает?

Ответы [ 2 ]

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

Я получал кандидатов как:

Candidate.find({}).lean()
       .then(candidates=>res.render("electionview", JSON.stringify(candidates))

Удаление .lean () исправило это.

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

На стороне сервера:

let obj = {};
obj.title = 'Election';
obj.poll = poll;
obj.data = candidates;
res.render('electionview', obj);

Я предполагаю, что функция рендеринга уже знает, как обслуживать объекты как JSON, поэтому нет необходимости JSON.stringify что-либо.

Тогда,на стороне клиента, JSON.parse() объект выше в целом.После этого у него должно быть свойство data, которое вы можете использовать по мере необходимости.

...