Stephen Last Stephen Last - 6 months ago 90
Node.js Question

Node, Express, Swig Template - Variable in HTML attribute

I'm using http://paularmstrong.github.io/swig/ as my template engine for a Node/Express app.

I can pass data into my template fine, but I'm having trouble using variables.

I have:

{% 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 %}


The
people
object is ok, and the loop works. However you'll notice that I'm trying to use
person._id
twice - the first one doesn't work, the second one does.

value="{{ person._id }}"
// value="[object Object]"

<label for="id_123">{{ 'id = ' + person._id }}</label>
// <label for="id_123">id = 568bc95f317e30e813541ab0</label>


Why do I get
[object Object]
when trying to use
person._id
within a HTML attribute, then get the correct value I'm after when using
person._id
inside HTML tags..?

Answer

Right, the person._id is actually a Mongoose ObjectId, which now makes sense to me. However when I console.log it, it shows a string.

Anyway, just doing '' + person._id works for what I need.

Comments