Search code examples
node.jsasynchronousnode-mysql

Is it ok to have many functions (over 10) to handle the async nature of Node (especially when adding into MySql database)


When I get an API call, i have to install to about 4,5 tables, since an entry has child items which in turn have child items. Since I have to pass data from the first insert to the second (using the parent ids) I end up having too many functions (like function insertTable1, insertTable1Kids, insertTable1KidsKids) so on..

Is this good design? It's bothering me that I'm using so many functions.. Is there a better way to handle this?


Solution

  • Use closures and the async module.

    npm install async
    

    Your code would look something like this...

    var async = require('async');
    
    exports.your_route = function(req, res) {
      var parent_id = req.query.parent_id;
      var calls = [];
      calls.push(function(callback) {
        // insertTable1 - use parent_id
        callback(false);
      });
      calls.push(function(callback) {
        // insertTable1Kids - use parent_id
        callback(false);
      });
      calls.push(function(callback) {
        // insertTable1KidsKids - use parent_id
        callback(false);
      });
      calls.push(function(callback) {
        // return response
        res.send("tabels for parent ID: "+parent_id+" created);
        callback(false);
      });
      async.series(calls);
    };