คำสั่ง MariaDB พื้นฐานบน Node.js

ในบทความนี้จะใช้แพ็คเกจ mariadb จาก NPM.

คำสั่งเริ่มต้นแบบธรรมดา

const mariadb = require('mariadb');

คำสั่งเริ่มต้นแบบ module

import * as mariadb from 'mariadb';

ในตัวอย่างด้านล่างจากนี้ไป จะขอใช้คำสั่งเริ่มต้นแบบ module ซึ่งสำหรับผู้ใช้แบบธรรมดาก็แค่เปลี่ยนจากรูปแบบ import ไปเป็น require เท่านั้น.

createConnection() กับ createPool()

การสั่งเชื่อมต่อฐานข้อมูลด้วย createConnection() นั้นจะเป็นการเชื่อมต่อแบบเดี่ยวๆ ซึ่งอาจจะทำให้ช้าเมื่อมีการเรียกใช้ query จำนวนมากๆ ต่างจากการเชื่อมต่อด้วย createPool() ซึ่งจะเปิดได้หลายๆ connection.

สิ่งที่จะต้องทำเมื่อใช้ createPool() คือจะต้องเรียกใช้ getConnection() เพื่อให้การเชื่อมต่อนั้นมีค่าเหมือนกันกับ createConnection() และโค้ดหลังจากนั้นก็จะทำงานได้เหมือนกัน.

ตัวอย่าง

// แบบ createConnection()
const conn1 = mariadb.createConnection({
    host: 'localhost',
    user: 'myuser',
    password: 'mypassword',
});
// นำ conn1 ไปใช้
conn1.end()

// แบบ createPool()
const pool = mariadb.createPool({
    host: 'localhost',
    user: 'myuser',
    password: 'mypassword',
});
const conn2 = await pool.getConnection();
// นำ conn2 ไปใช้
conn2.release();
conn2.end();
pool.end();

จากตัวอย่างด้านบน ค่าคงที่ conn1 และ conn2 จะมีค่านำไปใช้สั่งงานกับฐานข้อมูลได้เหมือนกัน. ในขั้นตอนปิดการเชื่อมต่อ ถ้าเป็นแบบ pool จะต้องสั่ง release() และสั่ง end() สำหรับ pool ด้วย มิฉะนั้นตัวโปรแกรมจะทำงานค้างอยู่ไม่สิ้นสุดการทำงาน.

SELECT ข้อมูล

การสั่ง SELECT ทำได้โดยทั้งใช้ query() หรือ prepare() แล้วตามด้วย execute().

ตัวอย่าง

// สั่งเลือกฐานข้อมูลก่อน (สามารถกำหนดในตอนเชื่อมต่อเลยก็ได้เช่นกัน)
await conn.query('USE `my_database`');

// ใช้ query()
const result = await conn.query('SELECT * FROM `my_table` WHERE `id` = ?', [12]);

// ใช้ prepare() + execute()
const prepare = await conn.prepare('SELECT * FROM `my_table` WHERE `id` = ?');
const result2 = await prepare.execute([12]);

จากตัวอย่างด้านบน ค่าของ result และ result2 จะออกมาเหมือนกัน คือในรูปแบบ array.

ตัวอย่างผลลัพธ์

[
  {
    id: 12,
    name: 'John'
  }
]

Insert, update ข้อมูล

การสั่ง INSERT, UPDATE ข้อมูลก็ทำในลักษณะเดียวกันกับ SELECT เพียงแต่ผลลัพธ์ที่ได้จากการ query() หรือ execute() จะแตกต่างออกไป คือจะได้ในรูปแบบ JSON result-set.

ใส่ความเห็น

อีเมลของคุณจะไม่แสดงให้คนอื่นเห็น ช่องข้อมูลจำเป็นถูกทำเครื่องหมาย *

คุณอาจใช้แท็กHTMLและแอททริบิวต์เหล่านี้: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>