2016-12-03 83 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;