Outline

6 连接数据库

  • 6.1 使用node-mysql连接MySQL数据库
  • 6.2 使用Nano连接CouchDB数据库
  • 6.3 使用Mongoose连接MongoDB数据库

6 连接数据库

6.1 使用node-mysql连接MySQL数据库

node-mysql书上使用的版本与最新的版本API变化很大, 最新版本文档见node-mysql lib,可以看到还提供了连接池,这里不做介绍。

一个简单客户端

/**
demonstration of node-mysql serviec
REF: https://github.com/felixge/node-mysql/
*/

var mysql = require("mysql");
var connection = mysql.createConnection({
  host: "localhost",
  user: "root",
  password: "root"
});

// 1 create database
connection.query("DROP DATABASE IF EXISTS node");
connection.query("CREATE DATABASE node");
connection.query("USE node");

// 2 create table
connection.query("CREATE TABLE test("+
  "id INT(11) AUTO_INCREMENT, " +
  "content VARCHAR(255)," +
  "PRIMARY KEY(id))");

// 3 insert data
for(var i = 0; i < 100; i++){
  connection.query("INSERT INTO test(content) VALUES(?)", ["content for row " + (i+1)]);
}

// 4 update data
connection.query("UPDATE test SET content = ? WHERE id >= ?", ["new content", 90],
  function(error, info){
    console.log("changed " + info.affectedRows + " rows.");
  });

// 5 query data - REF https://github.com/felixge/node-mysql/#streaming-query-rows
var query =  connection.query("SELECT id, content FROM test where id >= ? AND id <= ?",
  [80, 90]);
query.on("error", function(error){
  throw error;
}).on("result", function(row){
  connection.pause();
  console.log("#%s is %s", row.id, row.content);
  connection.resume();
}).on("end", function(){
  console.log("query finished.");
});

// close connection
connection.end();

6.2 使用Nano连接CouchDB数据库

TODO

6.3 使用Mongoose连接MongoDB数据库

TODO

6.4 连接Redis

TODO

Node.js高级编程读书笔记 - 5 数据库 - Never的更多相关文章

  1. Node.js高级编程读书笔记Outline

    Motivation 世俗一把,看看前端的JavaScript究竟能做什么. 顺便检验一下自己的学习能力. Audience 想看偏后台的Java程序员关于前端JavaScript的认识的职业前端工程 ...

  2. Node.js高级编程读书笔记 - 6 应用程序构建和调试 - Never

    Explanation 现阶段console.log(...),util.inspect(...), JSON.stringify(...)在控制台输出已经够用了[2015/07/19]. 单元测试隶 ...

  3. Node.js高级编程读书笔记 - 1 基本概念

    Outline 1 概述和安装 1.1 安装Node 1.2 Node简介 2 Node核心API基础 2.1 加载模块 2.2 应用缓冲区处理.编码和解码二进制数据 2.3 使用时间发射器模式简化事 ...

  4. Node.js高级编程读书笔记 - 4 构建Web应用程序

    Outline 5 构建Web应用程序 5.1 构建和使用HTTP中间件 5.2 用Express.js创建Web应用程序 5.3 使用Socket.IO创建通用的实时Web应用程序 5 构建Web应 ...

  5. Node.js高级编程读书笔记 - 3 网络编程

    Outline 3.4 构建TCP服务器 3.5 构建HTTP服务器 3.6 构建TCP客户端 3.7 创建HTTP请求 3.8 使用UDP 3.9 用TLS/SSL保证服务器的安全性 3.10 用H ...

  6. Node.js高级编程读书笔记 - 2 文件和进程处理

    Outline 3 文件.进程.流和网络 3.1 查询和读写文件 3.2 创建和控制外部进程 3.3 读写数据流 3 文件.进程.流和网络 3.1 查询和读写文件 path 从Node 0.8起,pa ...

  7. JS高级编程读书笔记

    导读:由于书的内容较多,内容划分也非常详尽,所以会分好几篇来写. 此页面仅作为跳转,权当个目录来用. 我会分块进行整理,大致如下: 第一章 简介 讲述javascript的历史,不打算整理,同学们大概 ...

  8. 《Node.js 高级编程》简介与第二章笔记

    <Node.js 高级编程> 作者简介 Pedro Teixerra 高产,开源项目程序员 Node 社区活跃成员,Node公司的创始人之一. 10岁开始编程,Visual Basic.C ...

  9. JavaScript、jQuery、HTML5、Node.js实例大全-读书笔记3

    技术很多,例子很多,只好慢慢学,慢慢实践!!现在学的这本书是[JavaScript实战----JavaScript.jQuery.HTML5.Node.js实例大全] JavaScript.jQuer ...

随机推荐

  1. [翻译]LSP程序的分类

    翻译的太垃圾,不建议其它人阅读本文. Note:LSP现在已经不推荐使用.自windows8和windows Server2012开始,使用Windows Filtering Platform. Wi ...

  2. Populating Tree Item With Record Group In Oracle Forms

    The below plsql program unit could be used in a WHEN-NEW-FORM-INSTANCE trigger to initially populate ...

  3. Java开发中经典的小实例-(do{}while())

    import java.util.Scanner;public class Test13 {    public static void main(String[] args) {        // ...

  4. C++11中对类(class)新增的特性

    C++11中对类(class)新增的特性 default/delete 控制默认函数 在我们没有显式定义类的复制构造函数和赋值操作符的情况下,编译器会为我们生成默认的这两个函数: 默认的赋值函数以内存 ...

  5. Json不知道key值情况下获取第一个键值对

    JObject jsonData = new JObject(); jsonData.Add("1", "1"); jsonData.Add("2&q ...

  6. 12款最佳Linux命令行终端工具, 20款优秀的 Linux 终端仿真器

    12款最佳Linux命令行终端工具     如果你跟我一样,整天要花大量的时间使用Linux命令行,而且正在寻找一些可替代系统自带的老旧且乏味的终端软件,那你真是找对了文章.我这里搜集了一些非常有趣的 ...

  7. PyCharm配置GitHub

    原文出处: https://github.com/wssnail/ws96apt/blob/master/weixin/a.py#L21-21打开file,选择settings,找到Version C ...

  8. JQuery_过滤选择器

    一.基本过滤器 1.基本过滤器 过滤器主要通过特定的过滤规则来筛选所需的 DOM 元素,和 CSS 中的伪类的语法类似:使用冒号(:)开头. <script type="text/ja ...

  9. spring文件下载记录

    /** * 下载方法 * @param request * @param response * @param storeName 文件在存在位置的名字(需要带着后缀) * @param content ...

  10. JQuery设置和去除disabled属性

    //两种方法设置disabled属性 $('#areaSelect').attr("disabled",true); $('#areaSelect').attr("dis ...