Использование mysql2.ping для проверки работоспособности сервера

#node.js #node-mysql2

Вопрос:

Я пытаюсь включить статус моего сервера MySQL в ответ моего маршрутизатора.

health.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) =gt; {  // 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;  

database.js:

 const mysql = require('mysql2');  module.exports = mysql.createConnection({  host: 'localhost',  user: 'testdb_user',  password: 'test'  database: 'testdb' });  

Доступ к маршруту с помощью приведенного выше кода всегда возвращает «здесь пока ничего» вместо фактического состояния базы данных.

Используя прокомментированный код внутри db.ping() функции, я получаю правильный результат, что сервер либо работает, либо работает.

Я предполагаю, что я как-то перепутал это с концепцией асинхронности/ожидания, но я не уверен. Также нет примера, который я нашел при использовании db.ping() вызова для установки переменной, которую я мог бы затем использовать вне функции (например, статус в моем случае). Как мне нужно изменить свой код выше, health.js чтобы убедиться, что я могу правильно установить свою status переменную, а затем передать ее в качестве ответа?

Комментарии:

1. Похоже, что ping основан на обратном вызове, а не на обещании, поэтому ожидание не будет делать то, что вы ожидаете.