2016-12-03 6 views
2

は私がエラーにはTypeErrorを以下の取得このmodule.exportsは:sqlHelper.ExecuteDatasetではありません。次の関数

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

のようにそれを使用している私のsqlhelper.js

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; 

ではなく、関数

私はここで何が間違っているのか分かりません。 助けてください。

答えて

5

SQLHelperのインスタンスを作成してからプロトタイプメソッドを作成する必要があります。プロトタイププロパティは、オブジェクトのインスタンスで使用でき、コンストラクタでは使用できません。あなたは、あなたがそれを使用するたびに別のオブジェクトをしたい場合、あなたはどこを変更することができ、

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

をまたは:あなたは(1つのオブジェクトのみごとに1株)シングルトンをしたい場合は

、あなたはこれを行うことができますこれにそれを使用する:

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

それとも、あなたが実際にどのインスタンスデータを持っていないと、あなただけの名前空間を使用したい場合は、あなたがこれを行うことができます:

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

module.exports = SQLHelper; 
関連する問題