I'm trying to call my function sendError
by doing this.instance.sendError
, but I get an error like shown below. From the report I can see two lines which it points me to. I guess the problem is with the DatabaseController
I've created, but I can't seem to understand what is the issue. Can someone please give me an explanation why this occurs? and by building a DatabaseController
like this is it efficient?
SocketHelper.js:12:27
DatabaseController.js:22:24
TypeError: Cannot read property 'sendError' of undefined
function SocketHelper(io, socket){
this.io = io;
this.socket = socket;
this.instance = this;
}
SocketHelper.prototype.getUserById = function(id, callback){
DatabaseController.databaseQuery("SELECT * FROM users WHERE id = ?", id, function (error, user) {
if(error || !user.length > 0) {
return this.instance.sendError("Couldn't find a user with ID: " + id);
}
return callback(null, user[0]);
});
};
module.exports = function (io) {
io.on('connection', function (socket) {
var helper = new SocketHelper(io, socket);
require('./chathelp.js')(socket, io, helper);
});
};
chathelp.js
module.exports = function (socket, io, controller) {
socket.on('userinfo', function () {
controller.getUser(function(error, user){});
});
}
DatabaseController
var createDatabaseConnection = function (callback) {
pool.getConnection(function (error, connection) {
if(error){
return callback(error);
}
return callback(null, connection);
});
};
var databaseQuery = function (query, parameters, callback) {
createDatabaseConnection(function (error, connection) {
if(error){
return callback(error);
}
if(parameters){
query = mysql.format(query, parameters);
connection.query(query, function (error, result) {
connection.release();
if(error){
return callback(error);
}
return callback(null, result);
});
} else {
connection.query(query, function (error, result) {
connection.release();
if(error){
return callback(error);
}
return callback(null, result);
});
}
});
};
module.exports = {
createDatabaseConnection: createDatabaseConnection,
databaseQuery: databaseQuery
};