如何修复车把中的前端 javascript 从服务器捕获未定义的值?

How to fix frontend javascript in handlebars catching undefined value from server?

我在后端有一个 JSON 对象,我想将其发送到前端 javascript。但是我在尝试访问该变量时经常遇到 "undefined" 。

candidates 是 json 对象并且在服务器端工作正常。

这是我的服务器端代码。

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

这是我在 Handlebars 中的脚本

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

但我在控制台中收到此错误。

Uncaught SyntaxError: Unexpected token ';'

当我删除分号时,控制台中的输出是 undefined。我错过了什么?

服务器端:

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

我假设渲染函数已经知道如何将对象作为 JSON,所以不需要 JSON.stringify 任何东西。

然后,在客户端,JSON.parse()上面的对象整体。在那之后,它应该有一个 data 属性 可以根据需要使用。

我得到的候选人是:

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

删除 .lean() 修复了它。