【发布时间】:2020-01-09 03:42:49
【问题描述】:
我最近一直在用 NODEJS 开发一个网络应用程序。我有一个负责所有 crud 操作的数据库模型。示例数据库模型
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);
});
});
}
我在 DB 模块中访问此功能,如
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 但在我看来,我正在处理所有的承诺。处理承诺的最佳方式是什么?我的 rerun promise 方法是否正确?
我的数据库连接块在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);
}
});
});
}
【问题讨论】:
标签: javascript node.js promise node-mysql request-promise