02月15, 2017

node-mysql笔记

之前一直想着写node的两篇文章,一是mysql的,二是关于邮件。

可能是拖延症的原因,一直没时间,加上各种锁事。下面简单整理一下node-mysql的相关资料。

建立连接

const mysql = require("mysql"),
      TEST_DATABASE = "blog";

//创建连接
let client = mysql.createConnection({
    user: "root",
    password: "密码",
});

client.connect();

// 使用某个数据库
client.query("use " + TEST_DATABASE);

这里用的数据库和表都是用firekylin的。表数据截图如下:

表数据

测试连接是否成功

client.connect(function(err){
    if(!err) {
        console.log("连接成功");
    }
});

基本的增删改查

let newData = {
    "key": "safsfasfas",
    "value": "asdfa",
    "desc": "test"
}
client.query(
    "INSERT INTO fk_options SET ?",
    newData,
    function (err, result) {
        console.log(result);
    }
)

client.query(
    "DELETE FROM fk_options WHERE `key` = ?",
    newData.key,
    function (err, result) {
        console.log("deleted " + result.affectedRows + " rows");
    }
)

client.query(
    "UPDATE fk_options SET `desc` = ? WHERE `key` = ?",
    ["xxx", newData.key],
    function (error, results, fields) {
        if (error) throw error;
        console.log(results)
    }
);

client.query(
    `SELECT * FROM ${TEST_TABLE}`,
    function (err, results, fields) {
        if (err) {
            throw err;
        }
        console.log(results);
    }
);

关闭数据库的连接

client.end()

没那么简单

这里有一个问题:

假设要查三个表,该怎么处理?即什么时候关闭。

按照callback回调的写法,写三个query,就有三个callback,得要计数才能知道这三个query操作全部完成。

方案一

多个sql写在一起。具体代码如下:

(待补)

方案二

用线程池。具体代码如下:

(待补)


另外ORM(如sequalize, waterline)是什么鬼,怎样结合mysql进行操作?

这一块待有空了,好好研究一下。

本文链接:www.my-fe.pub/post/node-mysql.html

-- EOF --

Comments

评论加载中...

注:如果长时间无法加载,请针对 disq.us | disquscdn.com | disqus.com 启用代理。