Julio Julio - 4 months ago 117x
SQL Question

How to pass parameters to mysql query callback in nodejs

I'm trying to figure out the correct way of passing custom data to a query call to be made available in the callback.
I'm using MySQL library in nodejs (all latest versions).

I have a call to connection.query(sql, function(err, result) {...});

I couldn't find a way to 1) pass custom data/parameter to the call so that 2) it can be made available when the callback is invoked.
So what is the proper way of doing so?

I have the following (pseudo-code):

for (ix in SomeJSONArray) {
sql = "SELECT (1) FROM someTable WHERE someColumn = " + SomeJSONArray[ix].id;
connection.query(sql, function (err, result) {
var y = SomeJSONArray[ix].id;

From the code above, I need to be able to pass the current value of "ix" used in the query to the callback itself.

How do I do that?


If you are using node-mysql, do it like the docs say:

connection.query('SELECT * FROM table WHERE id=? LIMIT ?, 5', [ user_id, start ], function (err, results) {


The docs also have code for proper escaping of strings, but using the array in the query call automatically does the escaping for you.