首页 > 解决方案 > 使用 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变量,然后将其作为响应传递?

标签: node.jsnode-mysql2

解决方案


推荐阅读