让我们在开始讨论之前先看看代码:
var sqlDb = require("mssql");
var settings = require("../settings");
exports.executeSql = function (sql, callback) {
var conn = new sqlDb.Connection(settings.dbConfig);
console.log('db.js Send sql-query');
console.log(" ");
conn.connect()
.then(function () {
var req = new sqlDb.Request(conn);
req.query(sql)
.then(function (recordset) {
callback(recordset);
})
.catch(function (err) {
console.log("here it breaks", err);
callback(null, err); //type error: undefined is not a function
})
})
.catch(function (err) {
console.log(err);
callback(null, err);
}); //
};
此函数接收sql语句和回调函数。当我运行代码时,我得到[类型错误:未定义不是函数]。
当我注释掉回调(记录集)时,它没有做任何事情(没有错误,但也没有别的)。所以我认为回调根本不被认为是超出了范围。奇怪的是,错误对象通过相同的回调函数传回,似乎有效。
settings.dbConfig如下所示:
exports.dbConfig = {
user: "username",
password: "pwd",
server: "SERVERNAME", // not localhost
database: "DB-Name",
port: 1433
};
我现在很沮丧。有人会非常友好地看看我的代码吗?我根本没有看到错误。
谢谢
编辑: 我像这样调用executeSql:
var db = require("./db");
var sql = "SELECT * FROM myTable";
db.executeSql(sql, function(data, err) {
if (err) {
console.log(" Internal Error: error connecting Database", err);
} else {
console.log("success", data);
}
});