Node.js // A module to manage a sqlite database

I managed to create a module to handle all the database call. It uses this lib: https://github.com/developmentseed/node-sqlite3

My issues are the following. Everytime I make a call, I need to make sure the database exist, and if not to create it. Plus, as all the calls are asynchronous, I end up having loads of functions in functions in callbacks ... etc.

It pretty much looks like this:

getUsers : function (callback){
    var _aUsers = [];
    var that = this;
    this._setupDb(function(){
        var db = that.db;

        db.all("SELECT * FROM t_client", function(err, rows) {
            rows.forEach(function (row) {
                _aUsers.push({"cli_id":row.id,"cli_name":row.cli_name,"cli_path":row.cli_path});

            });
            callback(_aUsers);
        });
    });
},  

So, is there any way I can export my module only when the database is ready and fully created if it does not exist yet?

Does anyone see a way around the "asynchronous" issue?

I don't think so. If you make it synchronous, you are taking away the advantage. Javascript functions are meant to be that way. Such a situation is referred to as callback hell. If you are facing problems managing callbacks then you can use these libraries :

See these guides to understand basics of asynchronous programming

You could also try using promises or fibers ...