Pranay kumar
Pranay kumar

Reputation: 2197

How can I check if an EJS variable exists?

I used EJS layout in my Node.js application. Currently I faced a problem when data which is required in the EJS file is not available then it simply generate an error. What I want is to add a condition before using the EJS variable in javascript.

Here is my code in which I use EJS variable inside script tag.

button.addEventListener("click",function()
{
  //here i face an error when sessionID is not available
  stripe.redirectToCheckout({
  sessionId:'<%= sessionId %>'
  })
})

here is the code in which I use conditions inside the EJS.

<div class="col-md-4 offset-md-4">
  <%if (data) { %>
    <h2><%- data.name %></h2>
    <h3><%- data.cost %></h3>
    <p><%- sessionId %></p>
    <button id="stripe-button" type="button" class="btn btn-info">Purchase</button>
  <% } %>
  <%if (message) { %>
    <h2><%- message %></h2>
  <% } %>
</div>

It also shows an error when it do not receive any message variable.

Error which I received is:

message is not defined. sessionID is not defined.

Upvotes: 1

Views: 2506

Answers (1)

Mansur Ali Koroglu
Mansur Ali Koroglu

Reputation: 1918

Your if check is incorrect. You can check locals.message or whatever to see if that's exists, then use it.

For your case it will be:

<div class="col-md-4 offset-md-4">
  <%if (locals.data) { %>
    <h2><%- data.name %></h2>
    <h3><%- data.cost %></h3>
    <p><%- sessionId %></p>
    <button id="stripe-button" type="button" class="btn btn-info">Purchase</button>
  <% } %>
  <%if (locals.message) { %>
    <h2><%- message %></h2>
  <% } %>
</div>

Upvotes: 4

Related Questions