Hi Sushil,
Why would you expect it to? Where in your function 'getExternalLocation' do
you see the word "return"?
var userData = getExternalLocation(args, function(err, rows) {});
In order to move forward, you need to understand the difference between
procedural and functional programming.
by default, JavaScript functions return 'void', which is what you're
getting in 'userData' variable. You are however supplying a 'function'
(which takes two parameters, 'err', and 'rows') but which is anonymous, to
the function you're calling, 'getExternalLocation'.
Take another look at the body of getExternalLocation, the function you
supply when you call it, is called 'cb', and on the line:
cb(err, rows);
>
>
you call the anonymous function you supplied earlier with the results of
your MSSQL query. The upshot of all this is that in the function body of
the anonymous function you supply to the 'getExternalLocation' function,
you will have the results you need, so you're anonymous function should
look like this:
getExternalLocation(args, function(err, rows) {
console.log(err);
console.log(rows);
});
at this stage, the results you require will be there. You need to try and
understand how you're then going to call the callback in the parameters to
the exported function here:
exports.eejsBlock_editbarMenuLeft = function (hook_name, args, cb) {
In order to understand how to get the results of your work out to the rest of
your application. This is, in my understanding the hardest thing to understand
about JS, so ask questions, work on it a lot, have a look at callback pyramids,
the Async library, and finally try and understand promises
Promises are the de-facto way to do things now, so in a lot of ways you may as
well jump straight to using those - but it's definitely good to understand the
function passing style of JavaScript as a general concept.
Cheers,
Alex
On Sunday, 2 July 2017 01:06:46 UTC+1, Sushil Kumar Kishan wrote:
>
> I want to return database value in node js and pass as a variable in ejs
> file.
>
> Bellow is the code, Which I used. *it did not return value.*
>
> function getExternalLocation(cb) {
>
> mssql.connect(msSqlSettings, function (err ) {
> if (err) {
> cb(err);
> }
> var getQuery = "SELECT [Title] FROM [dbo].[StyleTemplates] " ;
> //console.log(getQuery);
> var request = new mssql.Request();
> // query to the database and get the data
>
> request.query(getQuery, function (err, rows) {
> mssql.close();
> cb(err, rows);
> });
> });
> } exports.eejsBlock_editbarMenuLeft = function (hook_name, args, cb) {
>
> var userData = getExternalLocation(args, function(err, rows) {});
> args.content = args.content +
> eejs.require('ep_resources/templates/editbarButtons.ejs', {userData :
> **userData** });
> return cb();
> })
>
> *Userdata* did not return any value;
>
--
Job board: http://jobs.nodejs.org/
New group rules:
https://gist.github.com/othiym23/9886289#file-moderation-policy-md
Old group rules:
https://github.com/joyent/node/wiki/Mailing-List-Posting-Guidelines
---
You received this message because you are subscribed to the Google Groups
"nodejs" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To post to this group, send email to [email protected].
To view this discussion on the web visit
https://groups.google.com/d/msgid/nodejs/fe21a846-8bc4-480a-90ae-74dd785b2044%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.