MySQL 是世界上最受歡迎的關聯式資料庫之一。了解如何在 Node.js 中使用它。
MySQL 是世界上最受歡迎的關聯式資料庫之一。
當然,Node 生態系統中有幾個不同的套件可以讓您與 MySQL 進行互動,存儲數據,檢索數據等等。
我們將使用 mysqljs/mysql
,這個套件在 GitHub 上有超過 12,000 顆星並且存在多年。
安裝 Node mysql 套件
用以下指令安裝:
npm install mysql
初始化數據庫連接
首先要引入套件:
const mysql = require('mysql')
然後創建一個連接:
const options = {
user: 'the_mysql_user_name',
password: 'the_mysql_user_password',
database: 'the_mysql_database_name'
}
const connection = mysql.createConnection(options)
通過調用以下代碼來建立新的連接:
connection.connect(err => {
if (err) {
console.error('An error occurred while connecting to the DB')
throw err
}
})
連接選項
在上面的例子中,options
對象包含了 3 個選項:
const options = {
user: 'the_mysql_user_name',
password: 'the_mysql_user_password',
database: 'the_mysql_database_name'
}
還有許多其他選項可以使用,包括:
host
,資料庫主機名,默認為localhost
port
,MySQL 服務器端口號,默認為 3306socketPath
,用於指定 Unix socket 而不是主機和端口debug
,默認情況下禁用,可用於調試trace
,默認情況下啟用,當發生錯誤時打印堆棧跟踪ssl
,用於設置到服務器的 SSL 連接(本教程範圍外)
執行 SELECT 查詢
現在準備在資料庫上執行 SQL 查詢。該查詢一旦執行,將調用一個包含可能的錯誤、結果和字段的回調函數。
connection.query('SELECT * FROM todos', (error, todos, fields) => {
if (error) {
console.error('An error occurred while executing the query')
throw error
}
console.log(todos)
})
您可以傳入需要自動轉義的值:
const id = 223
connection.query('SELECT * FROM todos WHERE id = ?', [id], (error, todos, fields) => {
if (error) {
console.error('An error occurred while executing the query')
throw error
}
console.log(todos)
})
若要傳入多個值,只需將更多元素放入作為第二個參數傳遞的數組中:
const id = 223
const author = 'Flavio'
connection.query('SELECT * FROM todos WHERE id = ? AND author = ?', [id, author], (error, todos, fields) => {
if (error) {
console.error('An error occurred while executing the query')
throw error
}
console.log(todos)
})
執行 INSERT 查詢
您可以傳入一個對象:
const todo = {
thing: 'Buy the milk',
author: 'Flavio'
}
connection.query('INSERT INTO todos SET ?', todo, (error, results, fields) => {
if (error) {
console.error('An error occurred while executing the query')
throw error
}
})
如果表格有帶有 auto_increment
的主鍵,該值將在 results.insertId
中返回:
const todo = {
thing: 'Buy the milk',
author: 'Flavio'
}
connection.query('INSERT INTO todos SET ?', todo, (error, results, fields) => {
if (error) {
console.error('An error occurred while executing the query')
throw error
}
const id = results.resultId
console.log(id)
})
關閉連接
當你需要結束與資料庫的連接時,可以調用 end()
方法:
connection.end()
這將確保任何待處理的查詢都被發送,並且連接被正常終止。tags:MySQL,Node.js,database,relational database