Home > database >  Unable to get mysql count in node.js route
Unable to get mysql count in node.js route

Time:12-31

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 
          
            }
    })
}

CodePudding user response:

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.

CodePudding user response:

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);
        })
    })
}
  • Related