node.js - 使用 mysql2.ping 检查服务器是否启动或关闭
问题描述
我正在尝试将我的 MySQL 服务器的状态包含在我的路由器的响应中。
健康.js:
var express = require('express');
var router = express.Router();
const db = require('../database');
/* GET home page. */
router.get('/', async function(req, res, next) {
var status = "nothing here yet";
await db.ping((err) => {
// Not working
if(err) status = "Server is down!";
status = "MySQL Server is Active";
// Working
//if(err) return res.status(503).send("Server down!")
//return res.status(200).send("Server up and running!")
})
res.status(200).send(status);
});
module.exports = router;
数据库.js:
const mysql = require('mysql2');
module.exports = mysql.createConnection({
host: 'localhost',
user: 'testdb_user',
password: 'test'
database: 'testdb'
});
使用上面的代码访问路由总是返回“nothing here yet”而不是数据库的实际状态。
使用db.ping()
函数内的注释代码,我得到服务器启动或关闭的正确结果。
我假设我以某种方式将异步/等待的概念搞砸了,但我不确定。我也没有发现使用db.ping()
调用设置变量的示例,然后我可以在函数外部使用该变量(例如我的状态)。我需要如何更改上面的代码health.js
以确保我可以正确设置我的status
变量,然后将其作为响应传递?
解决方案
推荐阅读
- swift - 在 AVPlayer 的主包中获取子文件夹路径的问题
- python - 设置 SparkContext 时出现 Py4JError
- sql - 用另一个表列中的值更新和替换一个表列中的值
- vba - MS Access:如何将查询中的数据加载到表单中
- azure - 如何在 Azure 上使用 terraform 部署应用服务
- python - 'bot.run' 期间 Discord selfbot 的 MemoryError
- django-templates - Jinja / Django for 循环范围不起作用
- javascript - setTimout 调用太多次
- reactjs - 如何限制用户只选择一个组件?
- javascript - 单一职责原则 React 重构