另一遍通用的NODEJS数据库方法koa,express,node 通用方法连接MySQL

1.Node.js 连接 MySQL


$ cnpm install mysql

连接mysql:


var mysql = require('mysql'); var connection = mysql.createConnection({
host : 'localhost',
user : 'root',
password : '123456',
database : 'test'
}); connection.connect(); connection.query('SELECT 1 + 1 AS solution', function (error, results, fields) {
if (error) throw error;
console.log('The solution is: ', results[0].solution);
});

数据库连接参数说明


参数 描述
host 主机地址 (默认:localhost) user 用户名 password 密码 port 端口号 (默认:3306) database 数据库名 charset 连接字符集(默认:'UTF8_GENERAL_CI',注意字符集的字母都要大写) localAddress 此IP用于TCP连接(可选) socketPath 连接到unix域路径,当使用 host 和 port 时会被忽略 timezone 时区(默认:'local') connectTimeout 连接超时(默认:不限制;单位:毫秒) stringifyObjects 是否序列化对象 typeCast 是否将列值转化为本地JavaScript类型值 (默认:true) queryFormat 自定义query语句格式化方法 supportBigNumbers 数据库支持bigint或decimal类型列时,需要设此option为true (默认:false)bigNumberStrings supportBigNumbers和bigNumberStrings启用 强制bigint或decimal列以JavaScript字符串类型返回(默认:false) dateStrings 强制timestamp,datetime,data类型以字符串类型返回,而不是JavaScript Date类型(默认:false) debug 开启调试(默认:false) multipleStatements 是否许一个query中有多个MySQL语句 (默认:false) flags 用于修改连接标志 ssl 使用ssl参数(与crypto.createCredenitals参数格式一至)或一个包含ssl配置文件名称的字符串,目前只捆绑Amazon RDS的配置文件

2.Node.js 连接 MongoDB:

MongoDB是一种文档导向数据库管理系统,由C++撰写而成。MongoDB 教程。 安装驱动


$ cnpm install mongodb

增删改查


要在 MongoDB 中创建一个数据库,首先我们需要创建一个 MongoClient 对象,然后配置好指定的 URL 和 端口号。
如果数据库不存在,MongoDB 将创建数据库并建立连接。

创建连接


var MongoClient = require('mongodb').MongoClient;
var url = "mongodb://localhost:27017/mydb"; MongoClient.connect(url, function(err, db) {
if (err) throw err;
console.log("数据库已创建!");
db.close();
});

创建集合

我们可以使用 createCollection() 方法来创建集合: 创建集合


var MongoClient = require('mongodb').MongoClient;
var url = 'mongodb://localhost:27017/mydb';
MongoClient.connect(url, function (err, db) {
if (err) throw err;
console.log('数据库已创建');
var dbase = db.db("mydb");
dbase.createCollection('runoob', function (err, res) {
if (err) throw err;
console.log("创建集合!");
db.close();
});
});

数据库操作( CURD )

与 MySQL 不同的是 MongoDB 会自动创建数据库和集合,所以使用前我们不需要手动去创建。 插入数据 以下实例我们连接数据库

runoob 的 site 表,并插入两条数据:

插入数据


var MongoClient = require('mongodb').MongoClient;
var DB_CONN_STR = 'mongodb://localhost:27017/runoob'; # 数据库为 runoob var insertData = function(db, callback) {
//连接到表 site
var collection = db.collection('site');
//插入数据
var data = [{"name":"菜鸟教程","url":"www.runoob.com"},{"name":"菜鸟工具","url":"c.runoob.com"}];
collection.insert(data, function(err, result) {
if(err)
{
console.log('Error:'+ err);
return;
}
callback(result);
});
} MongoClient.connect(DB_CONN_STR, function(err, db) {
console.log("连接成功!");
insertData(db, function(result) {
console.log(result);
db.close();
});
});

执行以下命令输出就结果为:


$ node test.js //连接成功! { result: { ok: 1, n: 2 },
ops:
[ { name: '菜鸟教程',
url: 'www.runoob.com',
_id: 58c25e13a08de70d3b9d4116 },
{ name: '菜鸟工具',
url: 'c.runoob.com',
_id: 58c25e13a08de70d3b9d4117 } ],
insertedCount: 2,
insertedIds: [58c25e13a08de70d3b9d4116, 58c25e13a08de70d3b9d4117]
}

从输出结果来看,数据已插入成功。

我们也可以打开 MongoDB 的客户端查看数据,如:


show dbs admin 0.000GB
local 0.000GB
runoob 0.000GB # 自动创建了 runoob 数据库 show tables
site # 自动创建了 site 集合(数据表) db.site.find() # 查看集合中的数据
{ "_id" : ObjectId("58c25f300cd56e0d7ddfc0c8"), "name" : "菜鸟教程", "url" : "www.runoob.com" }
{ "_id" : ObjectId("58c25f300cd56e0d7ddfc0c9"), "name" : "菜鸟工具", "url" : "c.runoob.com" }

查询数据

以下实例检索 name 为 "菜鸟教程" 的实例:


var MongoClient = require('mongodb').MongoClient;
var DB_CONN_STR = 'mongodb://localhost:27017/runoob'; var selectData = function(db, callback) {
//连接到表
var collection = db.collection('site');
//查询数据
var whereStr = {"name":'菜鸟教程'};
collection.find(whereStr).toArray(function(err, result) {
if(err)
{
console.log('Error:'+ err);
return;
}
callback(result);
});
} MongoClient.connect(DB_CONN_STR, function(err, db) {
console.log("连接成功!");
selectData(db, function(result) {
console.log(result);
db.close();
});
});

执行以下命令输出就结果为:

连接成功!


[ { _id: 58c25f300cd56e0d7ddfc0c8,
name: '菜鸟教程',
url: 'www.runoob.com' } ]

更新数据

我们也可以对数据库的数据进行修改,以下实例将 name 为 "菜鸟教程" 的 url 改为 https://www.runoob.com


var MongoClient = require('mongodb').MongoClient;
var DB_CONN_STR = 'mongodb://localhost:27017/runoob'; var updateData = function(db, callback) {
//连接到表
var collection = db.collection('site');
//更新数据
var whereStr = {"name":'菜鸟教程'};
var updateStr = {$set: { "url" : "https://www.runoob.com" }};
collection.update(whereStr,updateStr, function(err, result) {
if(err)
{
console.log('Error:'+ err);
return;
}
callback(result);
});
} MongoClient.connect(DB_CONN_STR, function(err, db) {
console.log("连接成功!");
updateData(db, function(result) {
console.log(result);
db.close();
});
});

执行成功后,进入 mongo 管理工具查看数据已修改:


db.site.find()
{ "_id" : ObjectId("58c25f300cd56e0d7ddfc0c8"), "name" : "菜鸟教程", "url" : "https://www.runoob.com" }
{ "_id" : ObjectId("58c25f300cd56e0d7ddfc0c9"), "name" : "菜鸟工具", "url" : "c.runoob.com" }

删除数据

以下实例将 name 为 "菜鸟工具" 的数据删除 :


var MongoClient = require('mongodb').MongoClient;
var DB_CONN_STR = 'mongodb://localhost:27017/runoob'; var delData = function(db, callback) {
//连接到表
var collection = db.collection('site');
//删除数据
var whereStr = {"name":'菜鸟工具'};
collection.remove(whereStr, function(err, result) {
if(err)
{
console.log('Error:'+ err);
return;
}
callback(result);
});
} MongoClient.connect(DB_CONN_STR, function(err, db) {
console.log("连接成功!");
delData(db, function(result) {
console.log(result);
db.close();
});
});

执行成功后,进入 mongo 管理工具查看数据已删除:


db.site.find()
{ "_id" : ObjectId("58c25f300cd56e0d7ddfc0c8"), "name" : "菜鸟教程", "url" : "https://www.runoob.com" }

原文地址:https://segmentfault.com/a/1190000014999527

NodeJs中数据库的使用的更多相关文章

  1. nodejs中如何使用mysql数据库[node-mysql翻译]

    nodejs中如何使用mysql数据库 db-mysql因为node-waf: not found已经不能使用,可以使用mysql代替. 本文主要是[node-mysql]: https://www. ...

  2. 详细讲解nodejs中使用socket的私聊的方式

    详细讲解nodejs中使用socket的私聊的方式 在上一次我使用nodejs+express+socketio+mysql搭建聊天室,这基本上就是从socket.io的官网上的一份教程式复制学习,然 ...

  3. nodejs中常用加密算法

    在常用的nodejs+express工程中,为了安全在登录及表单传输时,应该都需进行加密传输,目前个人常用到的加密方式有下列几种: 1.Hash算法加密: 创建一个nodejs文件hash.js,输入 ...

  4. 如何优雅的处理Nodejs中的异步回调

    前言 Nodejs最大的亮点就在于事件驱动, 非阻塞I/O 模型,这使得Nodejs具有很强的并发处理能力,非常适合编写网络应用.在Nodejs中大部分的I/O操作几乎都是异步的,也就是我们处理I/O ...

  5. Nodejs中Mongodb使用

    Mongodb使用 打开解压后的Mongodb文件夹,新建data.logs文件夹,并在logs文件夹中新建mongodb.log文档. 添加后Mongod文件夹示意图: 用cmd命令行启动Mongo ...

  6. nodejs中mysql用法

    nodejs也算是一篇脚本了我们来看nodejs如何使用mysql数据库了有了它们两组合感觉还是非常的不错哦,下面一起来看nodejs中使用mysql数据库的示例,希望能够帮助到各位. <scr ...

  7. 在NodeJS中使用Redis缓存数据

    Redis数据库采用极简的设计思想,最新版的源码包还不到2Mb.其在使用上也有别于一般的数据库. node_redis redis驱动程序多使用 node_redis 此模块可搭载官方的 hiredi ...

  8. mongodb replica set 和 nodejs中使用mongoose连接replica

    一.mongodb replication 介绍 官网上的第一句话就是Replication is the process of synchronizing data across multiple ...

  9. nodejs中如何连接mysql

    nodejs中如何连接mysql,下面给出一个小Demo. 第一步安装mysql模块npm install mysql 第二步导入mysql模块var mysql = require('mysql') ...

随机推荐

  1. bzoj 3624: [Apio2008]免费道路【生成树+贪心】

    先把水泥路建生成树,然后加鹅卵石路,这里加的鹅卵石路是一定要用的(连接各个联通块),然后初始化并查集,先把必需的鹅卵石路加进去,然后随便加鹅卵石路直到k条,然后加水泥路即可. 注意判断无解 #incl ...

  2. 给Ambari集群里安装可视化分析利器工具Hue步骤(图文详解)

    扩展博客 以下,是我在手动的CDH版本平台下,安装Hue. CDH版本大数据集群下搭建Hue(hadoop-2.6.0-cdh5.5.4.gz + hue-3.9.0-cdh5.5.4.tar.gz) ...

  3. python代码覆盖率coverage简介与用法

    如果衡量单元测试对相应代码的测试重量,覆盖率是一个必要非充分条件,因此统计代码的覆盖率,检视单测是否充分,就尤为的重要.这里针对python-unittest的单测的覆盖率coverage进行使用说明 ...

  4. Spring 中 ApplicationContext 和 BeanFactory 的区别

    //从ApplicationContext 中取 bean ApplicationContext ac = new ClassPathXmlApplicationContext ( "com ...

  5. 解题报告:hdu 1556 Color the ball(区间修改,单点查询)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1556 Problem Description N个气球排成一排,从左到右依次编号为1,2,3....N ...

  6. 225 Implement Stack using Queues 队列实现栈

    Implement the following operations of a stack using queues. push(x) -- Push element x onto stack.pop ...

  7. 线程池机制使nginx性能提高9倍

    原文标题:Thread Pools in NGINX Boost Performance 9x! 原文官方地址:https://www.nginx.com/blog/thread-pools-boos ...

  8. js ajax 数组类型参数传递

    若一个请求中包含多个值,如:(test.action?tid=1&tid=2&tid=3),参数都是同一个,只是指定多个值,这样请求时后台会发生解析错误,应先使用 tradititon ...

  9. Java 线程实例 刷碗烧水和倒计时

    线程——烧水刷碗和倒计时实例 (一)烧水刷碗 刷碗的同时烧水:下面是碗的程序: 下面是烧水的程序:在水的实现类中,调用了Thread线程,让烧水刷碗同时进行. 注意:刷碗2s一次,烧水10s (二)1 ...

  10. (六)Mybatis总结之延迟加载

    应用场景: i.假如一个用户他有N个订单(N>=1000),那么如果一次性加载的话,一个用户对象的订单集合OrderList里面就会有1000多个Order的对象.计算:一个订单对象里面数据有多 ...