บทนำ: ติดตาม nodejs ก่อนหน้านี้สวัสดีโลก! นอกจากนี้เรายังสามารถเห็นคุณสมบัติที่ทรงพลังอื่น ๆ ด้วยความนิยมในปัจจุบันของชุมชน NodeJS และการสนับสนุนของวิศวกรจำนวนมากจึงมีการแนะนำโมดูลจำนวนมาก
เนื้อหา: ต่อไปนี้แสดงให้เห็นถึงการมีปฏิสัมพันธ์ระหว่าง NodeJS และ MySQL
ในเวลานี้คุณต้องเพิ่มโมดูลของ MySQL ใน NodeJS ในเวลานี้ NPM (Node Package Manager) ที่กล่าวถึงในบทก่อนหน้าได้รับการเปิดใช้งานแล้ว
ติดตั้งโมดูล MySQL ลงใน nodejs:
การคัดลอกรหัสมีดังนี้:
$ npm ติดตั้ง mysql
js script mysqltest.js
การคัดลอกรหัสมีดังนี้:
// mysqltest.js
// โหลดโมดูล mysql
var client = ต้องการ ('mysql') ไคลเอนต์
ไคลเอนต์ = ไคลเอนต์ใหม่ ()
// ชื่อฐานข้อมูลที่จะสร้าง
test_database = 'nodejs_mysql_test'
// ชื่อตารางที่จะสร้าง
test_table = 'ทดสอบ';
//ชื่อผู้ใช้
client.user = 'root';
//รหัสผ่าน
client.password = 'root';
// สร้างการเชื่อมต่อ
client.connect ();
client.Query ('สร้างฐานข้อมูล'+test_database, ฟังก์ชั่น (err) {
if (err && err.number! = client.error_db_create_exists) {
โยนเอ่อ;
-
-
// หากไม่มีการโทรกลับข้อผิดพลาดใด ๆ จะถูกปล่อยออกมาเป็น `'ข้อผิดพลาด' '
// เหตุการณ์โดยลูกค้า
client.query ('ใช้'+test_database);
client.query (
'สร้างตาราง'+test_table+
'(id int (11) auto_increment,'+
'ชื่อ Varchar (255),'+
'ข้อความข้อความ'+
'สร้าง DateTime'+
'คีย์หลัก (ID))'
-
client.query (
'แทรกลงใน'+test_table+''+
'set title =?, text =?, สร้าง =?',
['สุดยอด', 'นี่เป็นข้อความที่ดี', '2010-08-16 10:00:23']
-
var query = client.query (
'แทรกลงใน'+test_table+''+
'set title =?, text =?, สร้าง =?',
['รายการอื่น', 'เพราะ 2 รายการทำการทดสอบที่ดีขึ้น', '2010-08-16 12:42:15']
-
client.query (
'เลือก * จาก'+test_table
ฟังก์ชั่น selectcb (err, ผลลัพธ์, ฟิลด์) {
ถ้า (err) {
โยนเอ่อ;
-
console.log (ผลลัพธ์);
console.log (ฟิลด์);
client.end ();
-
-
เรียกใช้สคริปต์
การคัดลอกรหัสมีดังนี้:
โหนด mysqltest.js
ผลกระทบมีดังนี้:
// mysql-demo.js
const mysql = ต้องการ ('mysql2/promise'); // ใช้ MySQL2 ที่สนับสนุนสัญญา
ต้องการ ('dotenv'). config (); // การจัดการตัวแปรสภาพแวดล้อม
// ใช้พูลเชื่อมต่อเพื่อปรับปรุงประสิทธิภาพ
const pool = mysql.createpool ({
โฮสต์: process.env.db_host || 'localhost',
ผู้ใช้: process.env.db_user || 'ราก',
รหัสผ่าน: process.env.db_password || 'ราก',
ฐานข้อมูล: process.env.db_name || 'nodejs_mysql_test'
WaitforConnections: จริง
ConnectionLimit: 10,
Queuelimit: 0
-
// คำจำกัดความโครงสร้างตาราง (การจัดการ DDL)
const table_schema = `
สร้างตารางหากไม่มีโพสต์ (
ID int คีย์หลัก AUTO_INCREMENT
ชื่อ Varchar (255) ไม่ใช่ Null
ข้อความเนื้อหา
createD_at dateTime เริ่มต้น current_timestamp,
updated_at dateTime เกี่ยวกับการอัปเดต current_timestamp
) engine = innoDB เริ่มต้น charset = utf8mb4 collate = utf8mb4_unicode_ci;
-
// การห่อหุ้มตรรกะทางธุรกิจ
คลาส postdao {
ตัวสร้าง (พูล) {
this.pool = pool;
-
async เริ่มต้น () {
รอสิ่งนี้ pool.execute (table_schema);
console.log ('ตารางตรวจสอบ/สร้าง');
-
async createpost (โพสต์) {
const [result] = รอสิ่งนี้ pool.execute (
`แทรกลงในโพสต์ (ชื่อเนื้อหา)
ค่า (?,?) `,,
[post.title, post.content]
-
return {... โพสต์, id: result.insertid};
-
async getPosts (หน้า = 1, pagesize = 10) {
const Offset = (หน้า - 1) * PAGESIZE;
const [rows] = รอสิ่งนี้ pool.execute (
`เลือก * จากโพสต์
สั่งซื้อโดย createD_at desc
จำกัด ? ชดเชย? `,
[pagesize, ชดเชย]
-
แถวกลับ;
-
async transactionDemo () {
const conn = รอสิ่งนี้ pool.getConnection ();
พยายาม {
รอ Conn.BegInTransaction ();
// การดำเนินการธุรกรรม 1
รอ conn.execute (
`แทรกลงในโพสต์ (ชื่อเนื้อหา)
ค่า (?,?) `,,
['ธุรกรรม 1', 'Demo Operation Atomic']
-
// การดำเนินการธุรกรรม 2
const [result] = รอ conn.execute (
`อัปเดตโพสต์ตั้งค่าเนื้อหา =?
ที่ชื่อ =? `,
['เนื้อหาที่อัปเดต', 'ธุรกรรม 1']
-
รอ Conn.Commit ();
ผลการกลับมา;
} catch (err) {
รอ conn.rollback ();
โยนเอ่อ;
} ในที่สุด {
conn.release ();
-
-
-
// ตัวอย่างการดำเนินการ
(async () => {
พยายาม {
const dao = ใหม่ postdao (พูล);
รอ dao.initialize ();
// สร้างบทความใหม่
const newpost = รอ dao.createpost ({
Title: 'Modern Node.js Mysql Guide'
เนื้อหา: 'แนวทางปฏิบัติที่ดีที่สุดสำหรับการดำเนินการฐานข้อมูล'
-
console.log ('สร้างโพสต์:', newpost);
// การสืบค้นการปนเปื้อน
โพสต์ const = รอ dao.getPosts ();
console.log ('ผลลัพธ์หน้าแรก:', โพสต์);
// การสาธิตการทำธุรกรรม
const txResult = รอ dao.transactionDemo ();
console.log ('ธุรกรรมเสร็จสมบูรณ์:', txResult);
// คำถามสุดท้าย
const finalPosts = รอ dao.getPosts ();
console.log ('โพสต์สุดท้าย:', FinalPosts);
} catch (err) {
console.error ('ข้อผิดพลาดของแอปพลิเคชัน:', err);
} ในที่สุด {
รอสระว่ายน้ำ ();
-
-