Попытка сделать простой сервис для отдыха. Служба отдыха предназначена для подтягивания таблицы из локальной базы данных. Эта служба отдыха хочет сделать доступной для приложения для Android.
Возникли проблемы с передачей. Then block. Пробовал поймать ошибку, но без успеха. Как вы поймаете ошибку, если она ошибочна в первом. Затем ниже фрагмент кода является 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 так же. Исключена эта проблема, но она продолжает возвращать ошибку, необработанную на первом. Then. До сих пор я не знаком с методами.
Кажется, я нашел проблему. новый sqlDb.Request(conn); .Request недоступен при использовании mysql. Но как я могу исправить это
Если вы поймаете() ошибку, он не будет пойман снова, не возвращая новое отклонение. Как это:
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. Вам действительно нужен callback(), почему бы не использовать Promise?