簡體   English   中英

從 Stackblitz Node.js 項目連接到遠程 MySQL 數據庫

[英]Connecting to a remote MySQL database from Stackblitz Node.js project

我有一個 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 數據庫不能駐留在 StackBlitz 中。 此外,它也不能自己連接到外部 mysql 數據庫。

因此,您需要 StackBlitz 之外的后端 API 來進行數據庫調用,從而否定了首先在 StackBlitz 上構建后端的原因 (IMO)。 因此,目前建議的設置是通過 ngrok 安全地址從 StackBlitz 中的前端訪問的本地主機后端 API。

StackBlitz 正在努力讓基本的服務器請求在未來運行。 所以,注意這個空間。

我希望這個答案有助於節省其他人的時間。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM