Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

196
Views
Unable to get mysql count in node.js route

I am new to node.js, and currently working on demo project so my requirement is to get count of userId which I am calling by function and this function is declared outside of route, but I am getting undefined but in same function getting count values but when I returned count still getting undefined in route.

Code:

var express = require('express');
var router = express.Router();

router.get('/', function(req, res, next) {      
    const usersQuery = "SELECT * FROM users";
    dbConn.query(usersQuery,function(err,rows)     {
        if(err) {
            console.log('this error',res);
        } else {
            let total=getCount();   // calling function placed outside
            console.log(total);
            }
        
        });
    });

Function declared outside to return count:

function getCount(){
    const usersQuery = "SELECT count(id) as cnt FROM users";
    dbConn.query(usersQuery,function(err,rows)     {
        if(err) {
            console.log('failed  to get count');
        } else {
            return rows; // retun count 
          
            }
    })
}
about 4 years ago · Juan Pablo Isaza
3 answers
Answer question

0

You need to return the result of the query

function getCount(){
    const usersQuery = "SELECT count(id) as cnt FROM users";
    return dbConn.query(usersQuery,function(err,rows)     {
        if(err) {
            console.log('failed  to get count');
        } else {
            return rows; // retun count
        }
    })
}

Note that probably returns a Promise you need to handle correctly.

about 4 years ago · Juan Pablo Isaza Report

0

Finally I got the required output by using Promise() in node js

Code:

var express = require('express');
var router = express.Router();

router.get('/', function(req, res, next) {      
    const Query = "SELECT * FROM t1";
    dbConn.query(Query,function(err,rows)     {
        if(err) {
            // write some code
        } else {
// call to promise
              getData().then(function (outputVal) {
                console.log(outputVal[0].Usr);
            }).catch(function () {
                // write error here
            });
        }
    
    });
});

// Promise code

function getData() {
    return new Promise(function (resolve, reject) {
        //  setTimeout(function () {
        const MQuery = "SELECT count(id) as Usr FROM t2";
        dbConn.query(MQuery , function (err, rows) {
            if (err) {
                reject();
            } else {
                resolve(rows);
            }
            // }, 1000);
        })
    })
}
about 4 years ago · Juan Pablo Isaza Report

0

A couple of things you should know:

  1. The functions declared outside routes will be executed first in stack once the server starts even though you haven't called the specific route yet. By the time you call this function, it already holds undefined or null depending on the code inside the functions.
  2. dbConn.query() is Promise. Which means it works synchronously.

if you need count of users, here is what you can do:

router.get('/', function(req, res, next) {      
    const usersQuery = "SELECT * FROM users";
    dbConn.query(usersQuery,function(err,rows)     {
        if(err) {
            console.log('this error',res);
        } else {
            let total= rows.length // you will get an array of users, therefore the number of users is equal to the length of the array
            console.log(total);
        }
        
   });
});
about 4 years ago · Juan Pablo Isaza Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!