2016-12-03 3 views
2

Ниже приведен мой sqlhelper.jsmodule.exports: не является функцией

var req = require("request"); 
var tp = require('tedious-promises'); 
var dbConfig = require('../config/connectionString.json'); 
var TYPES = require('tedious').TYPES; 

function SQLHelper() { 
} 

SQLHelper.prototype.ExecuteDataset = function(query, params, callback, failure) { 

    tp.setConnectionConfig(dbConfig); 
    tp.sql(q); 
    $(params).each(function(idx) { 
     var p = params[idx]; 
     tp.parameter(p.name, p.value); 
    }); 

    tp.execute() 
     .then(function(results) { 
      callback(results) 
     }).fail(function(err) { 
      failure(err); 
     }); 
}; 

module.exports = SQLHelper; 

Я использовал его как этот

var sqlHelper = require('../SQLHelper.js'); 
sqlHelper.ExecuteDataset(q, params, function(results) {//Here I get error 
       console.log(results) 
      }, 
      function(err) { 
       console.log(err); 
      }); 

Я получаю следующее сообщение об ошибке TypeError: sqlHelper.ExecuteDataset не function

Я не знаю, что здесь не так. Просьба помочь.

ответ

5

Вам необходимо создать экземпляр SQLHelper, прежде чем он будет иметь прототипы. Свойства прототипа доступны в экземпляре объекта, а не в конструкторе.

Если вы хотите синглтон (только один объект, что каждый акции), вы можете сделать это:

// export an instance of our object 
module.exports = new SQLHelper(); 

Или, если вы хотите отдельный объект каждый раз, когда вы используете его, вы можете изменить, где вы использовать для этого:

// load module and create an instance 
let sqlHelper = new (require('../SQLHelper.js'))(); 

Или, если вы на самом деле не имеют каких-либо данных экземпляра, и вы просто хотите, чтобы использовать пространство имен, вы можете сделать это:

let SQLHelper = {}; 
SQLHelper.ExecuteDataset = ... 

module.exports = SQLHelper; 
Смежные вопросы