Подключение к MySQL перед запуском Node / Express Server - PullRequest
0 голосов
/ 12 октября 2019

Я новичок в Node и пытаюсь включить mysql2/promises в мое приложение Node (8.3.0) / Express (4.17), но пытаюсь определить, как настроить пул соединений до запуска сервера.

config.js

module.exports = Object.freeze({
    DB_HOSTNAME: process.env.DB_HOSTNAME,
    DB_PORT: process.env.DB_PORT || 3306,
    DB_NAME: process.env.DB_NAME,
    DB_USERNAME: process.env.DB_USERNAME,
    DB_PASSWORD: process.env.DB_PASSWORD,
    SSL_CERT: process.env.SSL_CERT || './ssl/server.crt',
    SSL_KEY: process.env.SSL_KEY || './ssl/server.key',
    SERVER_PORT: process.env.SERVER_PORT || 443,
    STATIC_DIR: '/static'
});

app.js

const fs = require('fs');
const express = require('express');
const app = express();
const config = require('./config');
const mysql = require('mysql2/promise');

const dbConfig = {
  connectionLimit: 10,
  host: config.DB_HOSTNAME,
  user: config.DB_USERNAME,
  password: config.DB_PASSWORD,
  database: config.DB_NAME,
  ssl: 'Amazon RDS'
};

const sslConfig = {
  key: fs.readFileSync(config.SSL_KEY),
  cert: fs.readFileSync(config.SSL_CERT)
};

const server = require('https').createServer(sslConfig, app);

// Start web server
server.listen(config.SERVER_PORT, () => {
  console.log('Web server started on port ' + config.SERVER_PORT);
});

app.use(express.static(__dirname + config.STATIC_DIR));

app.get('/', function (req, res) {
  res.sendFile(__dirname + '/index.html');
});

Нужно ли звонить mysql.createPool(dbConfig)внутри асинхронной / ожидающей функции?

1 Ответ

0 голосов
/ 12 октября 2019

Вы можете установить подключение к пулу в mysql2-promise с помощью этого кода:

var db = require('mysql2-promise')();

db.configure({
    "host": "localhost",
    "user": "foo",
    "password": "bar",
    "database": "db"
});

db.pool.on('connection', function (poolConnection) {
    poolConnection.config.namedPlaceholders = true;
});

db.execute('SELECT * FROM users WHERE LIMIT = :limit', {limit: 10}).spread(function (users) {
    console.log('Hello users', users);
});

в mysql модуле при использовании, вы должны позвонить creatPool для соединения

пример mysql модуль

var mysql = require('mysql');
var pool  = mysql.createPool({
  connectionLimit : 10,
  host            : 'example.org',
  user            : 'bob',
  password        : 'secret',
  database        : 'my_db'
});

pool.query('SELECT 1 + 1 AS solution', function (error, results, fields) {
  if (error) throw error;
  console.log('The solution is: ', results[0].solution);
});
...