【问题标题】:Connecting to a remote MySQL database from Stackblitz Node.js project从 Stackblitz Node.js 项目连接到远程 MySQL 数据库
【发布时间】:2023-01-31 18:54:08
【问题描述】:

我有一个 Node.js Stackblitz 项目,我正在尝试连接到远程 MySQL 数据库。在 Stackblitz 中不可能有 MySQL 数据库,因此尝试远程方法。但是,每当我尝试连接时,我都会收到“错误:连接 ETIMEDOUT”。非常感谢任何帮助或指点。

我正在使用下面的代码。可以使用我正在使用的凭据访问远程数据库,并在 Stackblitz 外部使用时返回数据。 Stackblitz 无法进行远程数据库访问,还是我遗漏了什么?

const express = require('express');
const mysql = require('mysql2/promise');
const app = express();
const port = 3010;
const path = require('path');

app.use(express.static('static'));

app.get('/', async function (req, res) {
  try {
    // create connection
    const connection = await mysql.createConnection({
      host: process.env.DB_HOST,
      port: process.env.DB_PORT,
      database: process.env.DB_DATABASE,
      user: process.env.DB_USER,
      password: process.env.DB_PASSWORD,
    });

    // query database
    const [rows, fields] = await connection.execute('SELECT * FROM `user`');

    res.send({
      rows,
      fields,
    });

  } catch (err) {
    console.log('err:', err);
  }
});

app.listen(port, () => {
  console.log(`Example app listening at http://localhost:${port}`);
});

【问题讨论】:

    标签: mysql node.js express stackblitz


    【解决方案1】:

    对于任何寻求解释的人。

    目前 mysql 数据库不能驻留在 StackBlitz 中。此外,它也不能自己连接到外部 mysql 数据库。

    因此,您需要 StackBlitz 之外的后端 API 来进行数据库调用,从而否定了首先在 StackBlitz 上构建后端的原因(IMO)。因此,目前建议的设置是通过 ngrok 安全地址从 StackBlitz 中的前端访问的本地主机后端 API。

    StackBlitz 正致力于让基本的服务器请求在未来运行。所以,注意这个空间。

    我希望这个答案有助于节省其他人的时间。

    【讨论】:

      猜你喜欢
      • 2017-06-18
      • 2020-05-05
      • 1970-01-01
      • 2020-01-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-08-14
      相关资源
      最近更新 更多