Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

200
Vistas
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 Respuestas
Responde la pregunta

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 Denunciar

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 Denunciar

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 Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda