2016-12-03 137 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); 
      }); 

我獲得以下錯誤類型錯誤:sqlHelper.ExecuteDataset不是功能

我不知道這裏錯了什麼。 請幫忙。

回答

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;