Используйте async с драйвером MySQL NodeJs - PullRequest
0 голосов
/ 21 мая 2019

Я хочу преобразовать функцию router.get('/', etc) в функцию, которая использует async и await .res.send и connection.query создают проблему, я не знаю, как с ними обращаться, используя конструкции async / await.

Я пытался использовать эту функцию:

const awaitHandlerFactory = (middleware) => {
    return async (req, res, next) => {
        try {
            await middleware(req, res, next)
        } catch (err) {
            next(err)
        }
    }
};

Этоэто код, который у меня есть в файле:

var express = require('express');
// const data = require("../data/repo");
var router = express.Router();

let mysql = require("mysql");
let config = require('../config/config.json');

let connection = mysql.createConnection(config);
connection.connect();
//
let guests = {};
let query1 = "select * from guests";
//GET home page.
 router.get('/', function(req, res, next) {
     connection.query(query1,  function (err, rows) {
         guests['guests'] = rows;
         res.send(guests)
     });
 });

эта функция работает router.get('/', etc...)

Я получаю это: и это то, что я хочу.

 "guests": [
        {
            "event_id": 1,
            "guest_id": 1,
            "firstName": "lkasjdl;skj",
            "lastName": "lskajdfal;skdj",
            "role": "lsakdjfalskdjflks;adjf",
            "created_at": null,
            "updated_at": null
        },

1 Ответ

0 голосов
/ 21 мая 2019

Вам необходимо преобразовать соединение в стиле обратного вызова во что-то, что можно ожидать. promisify из util сделает именно это.

const express = require('express');
// const data = require("../data/repo");
const router = express.Router();

const util = require("util");
const mysql = require("mysql");
const config = require('../config/config.json');

const connection = mysql.createConnection(config);
const query = util.promisify(connection.query);
connection.connect();

const guests = {};
const query1 = "select * from guests";
//GET home page.
 router.get('/', async function(req, res, next) {
    try {
        const rows = await query(query1);
    } catch(ex) {
      //process your error
    }
    guests['guests'] = rows;
    res.send(guests);
 });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...