How to make node.js function asynchronous? still returning empty object sometimes

0

Issue

I have an object in my Node.js route (result), and I want to split that into two separate objects and return them both. However, sometimes the second object is returned empty and to fix that I want to make the function that splits it asynchronous. For some reason its not working though, what am I doing wrong? The function is separateResult().

EDIT: The problem seems to be in my createResponse(rows) function. My SQL query always returns 6 rows but my createResponse(rows) function sometimes returns an object with 5 key-value pairs instead of 6.

function createResponse(rows) {
  var response = {}
  var random = 0
  for (let i = 0; i < 6; i++) {
    var random = Math.floor(Math.random() * 101)
    response[random] = rows[i].user_name
  }
  return response
}

Solution

Because Math.random() sometimes generates same result. This can be any time 4/10, 3/5 … anytime. Think of finding another way of giving key names to your response. E.G. you are using a loop. So i is always different. You can do response[rows[i].user_name+i]. Best practice would be using uuid library

Answered By – ABDULLOKH MUKHAMMADJONOV

This Answer collected from stackoverflow, is licensed under cc by-sa 2.5 , cc by-sa 3.0 and cc by-sa 4.0

Leave A Reply

Your email address will not be published.

This website uses cookies to improve your experience. We'll assume you're ok with this, but you can opt-out if you wish. Accept Read More