Недавно я разрабатывал веб-приложение с NODEJS. У меня есть модель БД, которая отвечает за все грубые операции. Пример модели БД
getDeviceList: function () {
return new Promise(function (resolve, reject) {
var sql = "SELECT * FROM `devices`";
db.query(sql, function (err, result) {
if (err) {
console.log(`FAILED: ${err}`);
reject(err);
} else resolve(result);
});
});
}
И я получаю доступ к этой функции в модуле БД, как
router.get("/inventory/devices", checkAuth, function (req, res, next) {
return new Promise(function (resolve, reject) {
db.getDeviceList().then(function (result) {
resolve(res.status(200).json(result));
}).catch(function (err) {
console.log(`FAILED: ${err}`);
reject(res.status(200).json(err));
});
});
});
Иногда, когда я закрываю базу данных; Я получаю UnhandledPromiseRejectionWarning , но в моих глазах я выполняю все обещания. Каков наилучший способ обработки обещаний и правильный ли мой метод обещание повторного запуска ? Мой блок подключения к БД находится в app.js
var connection = db.connectDB().then(function (connect) {}).catch(function (err) {
console.log(`FAILED: ${err}`);
});
, а мой connectDB()
равен
function () {
return new Promise(function (resolve, reject) {
db = mysql.createPool({
host: "localhost",
port: 3306,
user: "migration",
password: "iub5015",
database: "migration"
});
db.getConnection(function (err) {
if (err) {
console.log(`FAILED: ${err}`);
reject(err);
} else {
console.log("Connected");
resolve(db);
}
});
});
}