第10章 使用数据库存储网站数据

    • 使用 mysql 包操作 MySQL 数据库
    • 使用数据库的动态网站
    • 基于数据库的网站(增删改查)
    1. var connection = mysql.createConnection({
    2. host : 'localhost',
    3. user : 'me',
    4. password : 'secret',
    5. database : 'my_db'
    6. });
    7. connection.connect();
    8. connection.query('SELECT 1 + 1 AS solution', function (error, results, fields) {
    9. if (error) throw error;
    10. console.log('The solution is: ', results[0].solution);
    11. });
    12. connection.end();

    查询

    1. // error will be an Error if one occurred during the query
    2. // results will contain the results of the query
    3. // fields will contain information about the returned results fields (if any)
    4. });

    添加

    1. var post = {id: 1, title: 'Hello MySQL'};
    2. var query = connection.query('INSERT INTO posts SET ?', post, function (error, results, fields) {
    3. if (error) throw error;
    4. // Neat!
    5. });

    删除

    1. connection.query('DELETE FROM posts WHERE title = "wrong"', function (error, results, fields) {
    2. if (error) throw error;
    3. console.log('deleted ' + results.affectedRows + ' rows');
    4. })

    修改


    1. var mysql = require('mysql');
    2. var pool = mysql.createPool({
    3. host : 'example.org',
    4. user : 'bob',
    5. password : 'secret',
    6. database : 'my_db',
    7. connectionLimit: 10 // 默认是 10 个
    8. });
    9. pool.getConnection(function(err, connection) {
    10. // Use the connection
    11. connection.query('SELECT something FROM sometable', function (error, results, fields) {
    12. // 释放回连接池
    13. connection.release();
    14. // 处理错误
    15. // ...
    16. });
    17. });
    1. const pool = mysql.createPool({
    2. host: 'localhost',
    3. user: 'root',
    4. password: '123456',
    5. database: 'test',
    6. connectionLimit: 10 // 默认是 10 个
    7. })
    8. exports.query = (...args) => {
    9. // 从数组中弹出最后一个元素 callback 回调函数
    10. const callback = args.pop()
    11. pool.getConnection((err, connection) => {
    12. if (err) {
    13. return callback(err)
    14. }
    15. connection.query(...args, function (...results) { // ...results => [err, results, fields]
    16. // 释放回连接池
    17. connection.release()
    18. // 把 ...results => [err, results, fields] 展开调用 callback 继续往外抛
    19. callback(...results)
    20. })
    21. })

    结合数据库的网站