node.js连接GBase 8a 数据库 并进行查询代码示例

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
Redis 开源版,标准版 2GB
推荐场景:
搭建游戏排行榜
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
简介: node.js连接GBase 8a 数据库 并进行查询代码示例

1.背景:
node.js是一款流行的运行在服务端的 JavaScript,使用JavaScript语言进行编程,快速实现一些简单web服务等功能。

2.连接GBase代码示例:
使用node.js前先进行环境安装,化简安装步骤如下:

先从node.js网站上下载node.js安装包,本例中安装包为,也可以从https://nodejs.org/zh-cn/download/prebuilt-binaries地址上手动下载

wget https://nodejs.org/dist/v22.11.0/node-v22.11.0-linux-x64.tar.xz // 下载
tar -xvf node-v10.9.0-linux-x64.tar.xz // 解压
cd node-v10.9.0-linux-x64/ // 进入解压目录
./bin/node -v // 执行node命令 查看版本

解压文件的 bin 目录底下包含了 node、npm 等命令,我们可以使用 ln 命令来设置软连接:

ln -s /usr/software/nodejs/bin/npm /usr/local/bin/
ln -s /usr/software/nodejs/bin/node /usr/local/bin/
以下为一段node.js连接gbase8a的代码示例,注意由于目前8a还么有javascript的连接驱动程序,因此需要使用mysql的连接驱动package来进行连接,本例中使用了express和mysql这两个package,需要提前进行安装,具体安装指令示例如下:

创建代码目录:

mkdir test
cd test
npm install express --save //下载方式安装express package
npm install mysql --save //下载方式安装mysql package

完成后会在创建的test目录下生成node_modules目录内部包括下载的全部package和其依赖package,并生成package.json,package-lock.json两个文件作为下载package的描述信息

以下为连接gbase8a进行简单查询的示例代码:

其中gbase8a中的test.t1表结构如下:

CREATE TABLE "t1" (
"a" int(11) DEFAULT NULL,
"b" int(11) DEFAULT NULL,
"c" int(11) DEFAULT NULL
) ENGINE=EXPRESS DEFAULT CHARSET=utf8 TABLESPACE='sys_tablespace'
具体node.js代码test.js文件内容如下:

const express = require('express');
const mysql = require('mysql');
const util = require('util');
const bodyParser = require('body-parser');

// Promisify the mysql query method for a given connection
const promisifyQuery = (connection) => {
const query = util.promisify(connection.query).bind(connection);
return query;
};

const app = express();
const myport = 3000;

app.use(bodyParser.json());

app.post('/connect', async (req, res) => {
const { host, user, password, database, port } = req.body;

if (!host || !user || !password || !database || !port) {
return res.status(400).json({ error: 'Missing required connection parameters' });
}

const connectionConfig = {
host: host,
user: user,
password: password,
database: database,
port: port
};

let connection;

try {
connection = mysql.createConnection(connectionConfig);

// Execute the SQL query
connection.query('SELECT a, b, c FROM t1 limit 10', function (error, results, fields) {
  if(error){
      console.log('[SELECT ERROR] - ',error.message);
      return;
   }

   console.log('--------------------------SELECT----------------------------');
   console.log(results);
   console.log('------------------------------------------------------------\n\n');
   res.json({results});
});

} catch (error) {
// Handle database connection or query errors
console.error('Database error:', error);
res.status(500).json({ error: 'Database connection or query failed', message: error.message });
} finally {
// Ensure the database connection is closed
if (connection) {
connection.end();
}
}
});

app.listen(myport, () => {
console.log(Server is running on http://localhost:${myport});
});

3.调用和执行效果:
运行test.js javascript

[gbase@kylin10danji test]$ node test1.js
Server is running on http://localhost:3000
使用curl工具发送post请求给服务端口:

[gbase@kylin10danji gbase]$ curl -X POST http://localhost:3000/connect -H "Content-Type: application/json" -d '{"host":"192.168.56.161","user":"gbase","password":"gbase20110531","database":"test","port":"5258"}'
test.js服务端打屏显示:

[gbase@kylin10danji test]$ node test1.js
Server is running on http://localhost:3000
--------------------------SELECT----------------------------
[
RowDataPacket { a: 1, b: 2, c: 3 },
RowDataPacket { a: 1, b: 3, c: 6 },
RowDataPacket { a: 1, b: 5, c: 6 },
RowDataPacket { a: 2, b: 2, c: 3 },
RowDataPacket { a: 2, b: 3, c: 6 },
RowDataPacket { a: 2, b: 5, c: 6 },
RowDataPacket { a: 1, b: 2, c: 3 },
RowDataPacket { a: 1, b: 3, c: 6 },
RowDataPacket { a: 1, b: 5, c: 6 },
RowDataPacket { a: 2, b: 2, c: 3 }

]

返回curl客户端信息:

[gbase@kylin10danji gbase]$ curl -X POST http://localhost:3000/connect -H "Content-Type: application/json" -d '{"host":"192.168.56.161","user":"gbase","password":"gbase20110531","database":"test","port":"5258"}'
{"results":[{"a":1,"b":2,"c":3},{"a":1,"b":3,"c":6},{"a":1,"b":5,"c":6},{"a":2,"b":2,"c":3},{"a":2,"b":3,"c":6},{"

相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
2月前
|
JavaScript
短小精悍的js代码
【10月更文挑战第17天】
126 58
|
2月前
|
JavaScript 前端开发 开发者
如何在 Visual Studio Code (VSCode) 中使用 ESLint 和 Prettier 来检查代码规范并自动格式化 Vue.js 代码。
【10月更文挑战第7天】随着前端开发技术的快速发展,代码规范和格式化工具变得尤为重要。本文介绍了如何在 Visual Studio Code (VSCode) 中使用 ESLint 和 Prettier 来检查代码规范并自动格式化 Vue.js 代码。通过安装和配置这两个工具,可以确保代码风格一致,提升团队协作效率和代码质量。
246 2
|
2月前
|
JavaScript 前端开发 内存技术
js文件的入口代码及需要入口代码的原因
js文件的入口代码及需要入口代码的原因
40 0
|
3月前
|
编解码 前端开发 JavaScript
javascript检测网页缩放演示代码
javascript检测网页缩放演示代码
|
3月前
|
Web App开发 JavaScript 前端开发
添加浮动按钮点击滚动到网页底部的纯JavaScript演示代码 IE9、11,Maxthon 1.6.7,Firefox30、31,360极速浏览器7.5.3.308下测试正常
添加浮动按钮点击滚动到网页底部的纯JavaScript演示代码 IE9、11,Maxthon 1.6.7,Firefox30、31,360极速浏览器7.5.3.308下测试正常
|
24天前
|
JavaScript
原生js炫酷随机抽奖中奖效果代码
原生js随机抽奖是一个炫酷的根据数据随机抽奖的代码,该网页可进行随机抽取一个数据,页面动画高科技、炫酷感觉的随机抽奖效果,简单好用,欢迎下载!
42 3
原生js炫酷随机抽奖中奖效果代码
|
29天前
|
JavaScript 前端开发 开发者
如何在 Visual Studio Code (VSCode) 中使用 ESLint 和 Prettier 检查代码规范并自动格式化 Vue.js 代码,包括安装插件、配置 ESLint 和 Prettier 以及 VSCode 设置的具体步骤
随着前端开发技术的快速发展,代码规范和格式化工具变得尤为重要。本文介绍了如何在 Visual Studio Code (VSCode) 中使用 ESLint 和 Prettier 检查代码规范并自动格式化 Vue.js 代码,包括安装插件、配置 ESLint 和 Prettier 以及 VSCode 设置的具体步骤。通过这些工具,可以显著提升编码效率和代码质量。
294 4
|
1月前
|
JSON 移动开发 数据格式
html5+css3+js移动端带歌词音乐播放器代码
音乐播放器特效是一款html5+css3+js制作的手机移动端音乐播放器代码,带歌词显示。包括支持单曲循环,歌词显示,歌曲搜索,音量控制,列表循环等功能。利用json获取音乐歌单和歌词,基于html5 audio属性手机音乐播放器代码。
94 6
|
27天前
|
JavaScript 前端开发 开发者
如何在 Visual Studio Code (VSCode) 中使用 ESLint 和 Prettier 检查代码规范并自动格式化 Vue.js 代码
随着前端开发技术的快速发展,代码规范和格式化工具变得尤为重要。本文介绍如何在 Visual Studio Code (VSCode) 中使用 ESLint 和 Prettier 检查代码规范并自动格式化 Vue.js 代码。通过安装和配置这些工具,可以确保代码风格一致,提高代码质量和可读性。
61 1