nodejs之数据库连接
nodejs 对 MySQL、mongodb、redis 数据库的连接方式。
MySQL:
var mysql = require('mysql')
var { MYSQL } = require('../config/default.js') // 创建连接池
var pool = mysql.createPool({
host: MYSQL.HOST,
port: MYSQL.PORT,
user: MYSQL.USERNAME,
password: MYSQL.PASSWORD,
database: MYSQL.DATABASE
}) // 查询函数
const query = (sql, params) => {
return new Promise((resolve, reject) => {
pool.getConnection((err, connection) => {
if (err) {
resolve(err)
} else {
connection.query(sql, params, (error, results, fields) => {
if (error) {
reject(error)
} else {
resolve(results)
} connection.release(err => {
if (err) {
console.log('DB-关闭数据库连接异常')
}
})
})
}
})
})
} module.exports = query
用法示例:
const query = require('../mysql') // 查询所有用户
const getallusers = () => {
const _sql = 'SELECT * FROM tb_user' return query(_sql)
} // 查询单个用户信息
const getuser = (username) => {
const _sql = 'SELECT * FROM tb_user WHERE username = ?' return query(_sql, [username])
}
mongodb:
const MongoClient = require('mongodb').MongoClient
const { MONGO } = require('../config/default') // 无账号登录
let url = 'mongodb://' + MONGO.HOST + ':' + MONGO.PORT + '/' // 有账号登录,对于有特殊字符的密码需要 encodeURIComponent
if (MONGO.USERNAME && MONGO.PASSWORD) {
url = 'mongodb://' + MONGO.USERNAME + ':' +
encodeURIComponent(MONGO.PASSWORD) + '@' + MONGO.HOST + ':' + MONGO.PORT + '/'
} class Mongo {
static getInstance() {
if (!Mongo.instance) {
Mongo.instance = new Mongo
}
return Mongo.instance
} constructor() {
this.client = ''
this.connect()
} connect() {
return new Promise((resolve, reject) => {
if (!this.client) {
new MongoClient(url, { useNewUrlParser: true, useUnifiedTopology: true }).connect((err, client) => {
if (err) {
reject(err)
} else {
this.client = client.db(MONGO.DATABASE)
resolve(this.client)
}
})
} else {
resolve(this.client)
}
})
}
} // 暴露实例,全局通用
module.exports = Mongo.getInstance()
用法示例:
const mdb = require('../../mdb') module.exports = {
// 更新文章
updateArticleInfo (id, data) {
return new Promise((resolve, reject) => {
mdb.connect().then(async db => {
let articleColl = db.collection('article') articleColl.updateOne({ _id: ObjectId(id) }, {
$set: data
}, async (err, res) => {
if (!err) {
let [_data] = await articleColl.find({ _id: ObjectId(id) }).toArray()
resolve(_data)
return
}
reject(err)
})
})
})
}
}
redis:
// https://www.npmjs.com/package/ioredis
const Redis = require('ioredis')
const { REDIS } = require('../config/default') // redis 直接暴露 ioredis 的实例即可
module.exports = new Redis({
port: REDIS.PORT, // Redis port
host: REDIS.HOST, // Redis host
prefix: REDIS.PREFIX, //存诸前缀
// ttl: REDIS.TTL, //过期时间
// family: REDIS.FAMILY,
password: REDIS.PASSWORD
// db: 0
})
用法示例:
const Redis = require('../redis') const redisFun = {
set(key, value) {
return new Promise((resolve, reject) => {
Redis.set(key, value).then(res => {
resolve()
}).catch(err => {
reject()
})
})
},
get(key) {
return new Promise((resolve, reject) => {
Redis.get(key).then(res => {
resolve(res)
}).catch(err => {
reject(err)
})
})
}
} module.exports = redisFun
nodejs之数据库连接的更多相关文章
- 配置mysql允许远程链接
默认情况下,mysql帐号不允许从远程登陆,只能在localhost登录.本文提供了二种方法设置mysql可以通过远程主机进行连接. 修改用户表的数据 登入mysql后,更改 mysql 数据库里的 ...
- NodeJs之服务搭建与数据库连接
NodeJs之服务搭建与数据库连接 一,介绍与需求分析 1.1,介绍 Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境. Node.js 使用了一个事件驱动.非阻 ...
- nodejs的mysql模块学习(五)数据库连接配置之SSL
SSL选项 在SSL连接选项中需要一个字符串 或者对象 当是字符串的时候 将使用预定义的SSL配置文件 "Amazon RDS" 只有这一个预定义配置文件 用来连接到亚马逊RDS服 ...
- nodejs的mysql模块学习(三)数据库连接配置选项详解
连接选项 当在创建数据连接的时候 第一种大多数人用的方法 let mysql = require('mysql'); let connection = mysql.createConnection({ ...
- nodejs的mysql模块学习(四)断开数据库连接
断开连接有两种方式 end()函数 在这种情况下 所有先前排队的查询 仍然可以继续继续发送到服务器,但是如果在执行到断开连接的命令之前发生了致命的错误,那么end()将不会被执行 connection ...
- nodejs进阶(6)—连接MySQL数据库
1. 建库连库 连接MySQL数据库需要安装支持 npm install mysql 我们需要提前安装按mysql sever端 建一个数据库mydb1 mysql> CREATE DATABA ...
- nodejs+express+mysql 增删改查
之前,一直使用的是nodejs+thinkjs来完成自己所需的项目需求,而对于nodejs中另外一中应用框架express却了解的少之又少,这两天就简单的了解了一下如何使用express来做一些数据库 ...
- 使用 AngularJS & NodeJS 实现基于token 的认证应用(转)
认证是任何 web 应用中不可或缺的一部分.在这个教程中,我们会讨论基于 token 的认证系统以及它和传统的登录系统的不同.这篇教程的末尾,你会看到一个使用 AngularJS 和 NodeJS 构 ...
- 基于Cloud Foundry平台部署nodejs项目上线
Cloud Foundry(以下简称CF),CF是Vmware公司的PaaS服务平台,Paas(Platform as a Service,平台即服务), 是为开发者提供一个应用运行的平台,有了这人平 ...
随机推荐
- os模块查看系统数据
>>> import os >>> os.name # 操作系统类型 'posix' 如果是posix,说明系统是Linux.Unix或Mac OS X,如果是nt ...
- 8种排序算法 Java实现
冒泡排序 O(n2) 两个数比较大小,较大的数下沉,较小的数冒起来. public static void bubbleSort(int[] a) { //临时变量 int temp; //i是循环次 ...
- tcpdump使用和抓包分析
参考资料: http://www.cnblogs.com/ggjucheng/archive/2012/01/14/2322659.html tcpdump可以将网络中传送的数据包的“头”完全截获下来 ...
- 03.DRF-设计方法
RESTful设计方法 1. 域名 应该尽量将API部署在专用域名之下. https://api.example.com 如果确定API很简单,不会有进一步扩展,可以考虑放在主域名下. https:/ ...
- MFC vc++严重性 代码 说明 项目 文件 行 禁止显示状态 错误 C3646 “m_SockClient”: 未知重写说明符
严重性 代码 说明 项目 文件 行 禁止显示状态错误 C3646 “m_SockClient”: 未知重写说明符 MFC_TCP_CSocket_Client c:\users\tt2018\docu ...
- 小师妹学JVM之:JIT中的LogCompilation
目录 简介 LogCompilation简介 LogCompilation的使用 解析LogCompilation文件 总结 简介 我们知道在JVM中为了加快编译速度,引入了JIT即时编译的功能.那么 ...
- JDBC——什么是JDBC?
JDBC:Java数据库连接(Java DataBase Connectivity),是Java语言中用来规范客户端如何程序如何来访问数据库的应用程序接口(API),提供了诸如查询和更新数据库中数据的 ...
- MQ消息队列(1)—— 概念和使用场景
一.什么是消息队列 消息即是信息的载体.为了让消息发送者和消息接收者都能够明白消息所承载的信息(消息发送者需要知道如何构造消息:消息接收者需要知道如何解析消息),它们就需要按照一种统一的格式描述消息 ...
- springboot的jar为何能独立运行
欢迎访问我的GitHub https://github.com/zq2599/blog_demos 内容:所有原创文章分类汇总及配套源码,涉及Java.Docker.Kubernetes.DevOPS ...
- PHP开发环境搭建工具有哪些?
对于php开发小白来说搭建一个php运行环境就是一道坎! 因为要做php开发,搭建一个能够运行php网站的服务器环境是第一步,传统的php环境软件非常复杂,好在很多公司开发了一键搭建php安装环境,一 ...