Javascript 节点、表达式、Swig模板-HTML属性中的变量

Javascript 节点、表达式、Swig模板-HTML属性中的变量,javascript,node.js,express,swig-template,Javascript,Node.js,Express,Swig Template,我正在使用Node/Express应用程序作为模板引擎 我可以很好地将数据传递到模板中,但在使用变量时遇到了问题 我有: {% for person in people %} <input type="radio" name="id" value="{{ person._id }}" id="id_123" /> <label for="id_123">{{ 'id = ' + person._id }}</label><br /> {%

我正在使用Node/Express应用程序作为模板引擎

我可以很好地将数据传递到模板中,但在使用变量时遇到了问题

我有:

{% for person in people %}
    <input type="radio" name="id" value="{{ person._id }}" id="id_123" /> <label for="id_123">{{ 'id = ' + person._id }}</label><br />
{% endfor %}

为什么我在尝试使用
person时会得到
[object object]
。\u id
在HTML属性中,然后在使用
person时得到我想要的正确值。\u id
在HTML标记中..?

对,
person.\u id
实际上是一个猫鼬
ObjectId
,这对我来说很有意义。但是,当I
console.log
it时,它会显示一个字符串


不管怎样,只要做
''+person.\u id
就可以满足我的需要。

我认为你需要使用tilde来实现这个目的:

{{ 'id = ' ~ person._id }}

person.\u id
是一个有自己属性的猫鼬对象。因此,如果在
swig
模板中使用
person.\u id
,它会将其作为对象。通过执行
'id='+person.\u id
,它在内部将其转换为
person.\u id\u toString()

尝试使用:

value={{ person._id.toString() }} if you want _id to be string
value={{ person._id.toString() }} if you want _id to be string