如何使用Docker和Node.js开始使用MariaDB

304 阅读2分钟

使用Docker和Node.js开始使用MariaDB

多年来,[MariaDB]一直是开发人员使用的首选数据库解决方案。它是开源的、关系型的,因此有大量的开发者社区使用它来构建他们的应用程序的数据库。

此外,[MariaDB公司]提供高质量的企业级产品,使MariaDB走在了其他数据库供应商的前面。

同时,[MariaDB基金会]作为MariaDB社区代码的保管者和守护者,为MariaDB的成功做出了巨大贡献。

本文将为开发者提供一个关于MariaDB与[Docker]和[Node.js]的使用指南和平台。

前提条件

在对应用程序进行编码之前,需要具备以下条件。

  • 对MariaDB和Docker命令的工作知识
  • 安装了[MariaDB]客户端
  • 安装了[Node.js]和NPM包
  • 安装了桌面版[Docker]

设置一个MariaDB Docker容器

在成功下载和安装Docker之后,我们需要拉出[MariaDB服务器镜像]并创建一个容器。然后,在终端上,执行以下命令。

$ docker run -p 127.0.0.1:3306:3306  --name mariadbdemo -e MARIADB_ROOT_PASSWORD=Demo123@ -d mariadb:latest

上述命令将下载并创建一个MariaDB服务器容器,以连接并使用MariaDB客户端进行通信。

容器的名字是mariadbdemoDemo123@ ,是MariaDB根用户的密码。

注意,可以使用其他SQL客户端,但我们将使用MariaDB的最新版本,以保持本指南的简单和统一。

接下来,将通过在终端运行以下命令来连接MariaDB实例。

$ mariadb --host 127.0.0.1 -P 3306 --user root –pDemo123@

下面的屏幕将出现,这意味着我们已经成功连接到MariaDB实例。

maria-db-root

下一步将是通过运行下面的命令创建一个新的数据库。

CREATE DATABASE demodb;

然后我们通过运行下面的命令创建一个新的表。

CREATE TABLE demodb.persons (Name VARCHAR(50));

最后,将插入几条记录,如下所示。

INSERT INTO demodb.persons VALUES ('Bob'), ('Alice'), ('Ben'), ('Mary');

用Node.js连接到MariaDB

随着MariaDB数据库的下载和安装。现在可以在一个新的Node.js应用程序中使用它了。

首先,我们创建一个新的目录,然后浏览到它。接下来,创建一个名为server.js 的新JavaScript文件,它将作为Node服务器的主要模块。

接下来将浏览到该目录并在终端执行以下命令。

$ npm init

人们可以填写出现的提示,或按回车键将其作为默认值,通过所有的选项。

一个package.json 文件将与server.js 文件在同一目录下自动生成。

注意,我们现在有一个可运行的Node应用程序。

接下来,我们将安装一个Express包,作为Node应用程序的网络框架。为了安装Express包,我们执行下面的命令。

$ npm install express

接下来,我们将安装一个MariaDB Node.js连接器。它将建立一个连接并与我们的MariaDB实例通信。

下面的命令将被用来安装MariaDB Node.js连接器。

$ npm install mariadb

现在,我们可以添加连接到MariaDB的代码。

首先,我们将创建一个新的可重复使用的模块文件,名称为db.js

db.js 模块将利用MariaDB Node.js连接器,使我们的应用程序能够连接到MariaDB并与之通信。

db.js 的代码将如下所示。

// here we import the mariadb
const mariadb = require('mariadb');

// here we create a new connection pool
const pool = mariadb.createPool({
  host: "127.0.0.1", 
  user: "root", 
  password: "Demo123@",
  database: "demodb"
});

// here we are exposing the ability to creating new connections
module.exports={
    getConnection: function(){
      return new Promise(function(resolve,reject){
        pool.getConnection().then(function(connection){
          resolve(connection);
        }).catch(function(error){
          reject(error);
        });
      });
    }
  }

注意避免将所有敏感的数据库连接细节直接暴露给我们的连接模块。相反,最好是使用dotenv变量来处理敏感的连接细节。

最后一步是创建一个Express端点,通过以下方式利用MariaDB Node.js连接器db.js

打开文件server.js ,并将以下代码粘贴到其中

const express = require('express');
const pool = require('./db');
const app = express();
const port = 5000;

// here we expose an endpoint "persons"
app.get('/persons', async (req, res) => {
    let conn;
    try {
        // here we make a connection to MariaDB
        conn = await pool.getConnection();

        // create a new query to fetch all records from the table
        var query = "select * from persons";

        // we run the query and set the result to a new variable
        var rows = await conn.query(query);

        // return the results
        res.send(rows);
    } catch (err) {
        throw err;
    } finally {
        if (conn) return conn.release();
    }
});

app.listen(port, () => console.log(`Listening on port ${port}`));

最后,我们将通过在终端执行以下命令来运行Node应用程序。

$ node server.js

运行上述命令后,一个成功的消息将显示在控制台,即服务器已经启动,并且正在监听指定的端口。

测试

一旦Node项目被启动,我们可以通过执行一个请求来测试它。例如,我们可以执行以下curl命令。

$ curl http://localhost:5000/persons

上述命令返回以下JSON响应的有效载荷。

person-route

总结

截至目前,开发人员现在可以使用MariaDB与Node.js。MariaDB可以提供很多关于如何建立一个创新的数据库来创建现代应用程序。