尝试制作简单的休息服务。其余服务用于从本地数据库中提取表。这个休息服务想要为Android应用程序提供。
无法通过。然后阻止。尝试捕捉错误但没有成功。如果在第一个错误中出错,你如何捕获错误。然后 下面的代码是db.js,并设置与数据库的连接。
var sqlDb = require("mysql");
var settings = require("../settings");
exports.executeSql = function (sql, callback) {
var conn = new sqlDb.createConnection(settings.dbConfig);
conn.connect()
// !! Error unhandled
.then(function () {
var req = new sqlDb.Request(conn);
req.query(sql)
.then(function (recordset) {
callback(recordset);
})
.catch(function (err) {
console.log(err);
callback(null, err);
});
})
.catch(function (err) {
console.log(err);
callback(null, err);
});
};
设置连接后,执行下面的代码。有错误处理。
var db = require("../core/db");
exports.getList = function (req, resp) {
db.executeSql("SELECT * FROM employees", function (data, err) {
if (err) {
// throws back error to web
resp.writeHead(500, "Internal Error", { "Content-Type":
"application/json" });
resp.write(JSON.stringify({ data: "ERROR occurred:" + err }));
} else {
resp.writeHead(200, { "Content-Type": "application/json" });
resp.write(JSON.stringify(data));
}
resp.end();
});
};
为数据库等设置创建了一个单独的js文件。以同样的方式测试了我与db的连接。排除了这个问题,但它继续返回第一个未处理的错误。然后。到目前为止,我对方法并不熟悉。
我想我发现了这个问题。 new sqlDb.Request(conn);使用mysql时,.Request不可用。但是我该如何解决这个问题
答案 0 :(得分:0)
如果你发现错误()错误,如果没有返回新的拒绝,它将不再被捕获。像这样:
conn.connect()
.then(function () {
var req = new sqlDb.Request(conn);
// note the "return" here
return req.query(sql)
.then(function (recordset) {
callback(recordset);
})
.catch(function (err) {
console.log(err);
callback(null, err);
// note the line below
return Promise.reject(err)
});
})
.catch(function (err) {
console.log(err);
callback(null, err);
});
};
PS。你真的需要回调(),为什么不使用Promise?