记录一下nodejs调用数据库连接池的代码

这篇博客分享了如何在Node.js中实现数据库连接池的功能,以优化数据库操作性能。通过实例代码展示了如何配置和调用MySQL的连接池,为后端开发提供了一个实用的参考。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

直接上代码

/**
* @param {Object} payload 上一节点的输出
* @param {Object} node 指定某个节点的输出
* @param {Object} query 服务流第一个节点的输出
* @param {Object} context { appKey, appSecret }
* @param {Object} global 变量
*/

module.exports = async function(payload, node, query, context, global) {
	const mysql = require('mysql');
	const moment = require('moment');
	var name = query.name;
	var phone = query.phone;
	var deviceNames = query.deviceNames;
	var type = query.type;
	var permission = query.permission;
	var company = query.company;
	var createTime = moment(new Date).add(8, "hours").format("YYYY-MM-DD HH:mm:ss");
	const pool = mysql.createPool({
		host: '自己的数据库host',
		user: '自己的数据库用户名',
		password: '自己的数据库密码',
		port: '3306',
		database: '自己的数据库名',
		multipleStatements: true,
		supportBigNumbers:true,
	});
	var str = '';
	if(deviceNames!=''&&deviceNames!=undefined){
    	if(deviceNames.indexOf(',')!=-1){
    		//包含,
			var arr = deviceNames.split(",");
			arr.map(function(item){
				if(item!=''){
					str+= '(\''+name+'\',\''+phone+'\','+type+','+permission+',\''+createTime+'\',\''+item+'\',\''+company+'\'),';
				}
			});
			str = str.substring(0,str.length-1);
    	}else{
    		str = '(\''+name+'\',\''+phone+'\','+type+','+permission+',\''+createTime+'\',\''+deviceNames+'\',\''+company+'\')';
    	}
    	var sqlStr = "REPLACE INTO device_user (name,phone,type,permission,create_time,device_name,company) VALUES "+str;
    	console.log(sqlStr);
		if(str != ''){
			const promise = new Promise(function(resolve, reject) { 
				pool.getConnection(function(err, connection) {
				  if (err) {
					reject( err )
				  } else {
					connection.query(sqlStr, ( err, rows) => {
					  if ( err ) {
						reject( err )
					  } else {
						resolve( rows )
					  }
					  // 结束会话
					  connection.release()
					})
				  }
				});
			});
			await promise.then(function(data){
				console.log("success ",data);
			},function(err){
				console.log("err ",err);
			});
		}
	}
	return null;
}
### 在 Node.js 中检查数据库是否存在 要在 Node.js 中检查某个数据库是否存在,通常需要使用数据库驱动程序来发送查询请求。以下是针对不同数据库的具体实现方式。 #### 1. 对于 MySQL/MariaDB 数据库 可以使用 `mysql2` 或者 `mysql` 模块向信息模式(information_schema)发出查询语句以验证目标数据库的存在状态[^1]。下面是一个例子: ```javascript const mysql = require('mysql'); // 创建连接池或者单个连接实例 let connection = mysql.createConnection({ host: 'localhost', user: 'root', password: '' }); function checkDatabaseExists(dbName, callback) { let queryStr = "SELECT SCHEMA_NAME FROM INFORMATION_SCHEMA.SCHEMATA WHERE SCHEMA_NAME = ?"; connection.query(queryStr, [dbName], (err, results) => { if (err) return callback(err); // 如果有匹配的结果则表示存在该数据库 callback(null, !!results.length); }); } checkDatabaseExists('test_db', (error, exists) => { console.log(`Does test_db exist? ${exists}`); }); ``` 这段代码片段展示了如何通过调用回调函数返回布尔值的方式告知调用方所询问的数据库是否已经建立。 #### 2. 对于 MongoDB 数据库 MongoDB 不同于关系型数据库,它的集合概念更接近传统意义上的表结构。然而我们仍然能够尝试访问特定名字空间下的 DB 实体来看看它们是不是已经被创建过了[^3]: ```javascript const MongoClient = require('mongodb').MongoClient; (async () => { try { const uri = "your_mongodb_connection_string"; const client = await MongoClient.connect(uri); const adminDb = client.db().admin(); const dbsList = await adminDb.listDatabases(); let targetDbName = 'example_database'; let found = dbsList.databases.some((dbInfo) => dbInfo.name === targetDbName); console.log(`${targetDbName} exists:`, found); } catch(e){ console.error("Error checking databases:", e.message); } })(); ``` 这里采用异步/等待语法简化逻辑控制流,并且利用管理接口列举所有可用数据库列表之后逐一比较名称属性直到找到为止。 --- ### 注意事项 - 上述两种方法分别适用于不同的数据库管理系统(DBMS),因此在实际编码前应先确认自己使用的具体类型是什么。 - 还要注意权限问题,因为某些低级别账户可能不具备查看全局元数据视图的权利。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值