Khi làm việc với cơ sở dữ liệu, bạn có thể chọn sử dụng các nguyên bản do cơ sở dữ liệu cung cấp hoặc sử dụng một thư viện được xây dựng trên cùng và tóm tắt các chi tiết nhỏ cho bạn.
Trình tựlà một trong những thư viện đó và nó là một trình bao bọc Node.js rất phổ biến choPostgreSQL,MySQLvà các cơ sở dữ liệu khác.
Trong bài đăng này, tôi sẽ khám phá cách sử dụng Sequelize để làm việc với cơ sở dữ liệu PostgreSQL.
Cài đặt và cấu hình Sequelize
Dưới mui xe, Sequelize sử dụngpg
thư viện để kết nối với PostgreSQL, vì vậy khi chúng tôi cài đặtsequelize
gói npm, chúng tôi cũng cần cài đặtpg
:
npm install pg sequelize
Mẹo: đừng quên lần chạy đầu tiên
npm init -y
nếu dự án là thương hiệu mới và bạn không cópackage.json
tệp đã có.
Trong tệp Node.js của bạn, trước tiên bạn xác định các biến truy cập cơ sở dữ liệu:
const user = '<postgres user>'
const host = 'localhost'
const database = '<postgres db name>'
const password = '<postgres password>'
const port = '<postgres port>'
Sau đó, nhập 3 đối tượng từsequelize
:
import { Sequelize, Model, DataTypes } from 'sequelize'
Sau đó, bạn có thể khởi tạo mộtSequelize
cá thể đối tượng sử dụng cú pháp này:
const sequelize = new Sequelize(database, user, password, {
host,
port,
dialect: 'postgres',
logging: false
})
Chúng tôi cho Sequelize biết đây là loại cơ sở dữ liệu nào trongdialect
tài sản (như đã đề cập, nó có thể xử lý nhiều hơn chỉ Postgres).
Chúng tôi cũng vô hiệu hóa việc ghi nhật ký, vì nó có thể rất dài dòng vì nó ghi lại tất cả các truy vấn SQL mà chúng tôi không thực sự cần xem xét (trừ khi bạn đang gỡ lỗi một vấn đề).
Cách tạo mô hình Sequelize
Đối với mỗi bảng bạn muốn thao tác bằng cách sử dụng Sequelize, bạn tạomô hình.
Đây là một ví dụ, giả sử chúng ta códogs
bảng có hai cột:name
vàage
.
Chúng tôi tạo ra mộtDog
mở rộng lớp họcModel
lớp cơ sở:
import { Sequelize, Model, DataTypes } from 'sequelize'
const class Dog extends Model {}
Sau đó gọi choinit()
phương thức static trên lớp mô tả dữ liệu mà nó chứa và các quy tắc chúng ta muốn áp dụng. Trong trường hợp này, chúng tôi vô hiệu hóanull
:
Dog.init({
name: {
type: DataTypes.STRING,
allowNull: false
},
age: {
type: DataTypes.INTEGER,
allowNull: false
}
}, {
sequelize,
modelName: 'dog',
timestamps: false
})
Chúng tôi đã sử dụngDataTypes.STRING
vàDataTypes.INTEGER
. CácDataTypes
đối tượng chứa tham chiếu đến tất cả các kiểu mà chúng ta có thể sử dụng và chúng ánh xạ tới từng kiểu cơ sở dữ liệu cụ thể.Xem tài liệu chính thứccho nhiều loại hơn bạn có thể sử dụng.
Cách lấy dữ liệu từ cơ sở dữ liệu
Bây giờ chúng ta đã có một mô hình, làm cách nào để lấy dữ liệu ra khỏi bảng?
Chúng ta có thể sử dụngfindAll()
phương pháp:
Dog.findAll()
Việc gọi phương thức này sẽ trả về danh sách tất cả các hàng và chúng tôi sẽ gán nó cho một biến:
const results = await Dog.findAll()
Chúng tôi sử dụng
await
bởi vìfindAll()
trả lại một lời hứa
Để giới hạn các cột chúng tôi truy xuất, hãy chuyển một đối tượng vớiattributes
mảng:
Dog.findAll({
attributes: ['age']
})
Thêm mộtWHERE
mệnh đề cho truy vấn bằng cách sử dụngwhere
bất động sản. Ví dụ: nhận tất cả các con chó 8 tuổi:
Dog.findAll({
where: {
age: 8,
}
})
Hoặc nhận tất cả những con chó có tuổi trên 5:
Dog.findAll({
where: {
age: {
[Op.gte]: 5,
}
}
})
Nhiều thuộc tính hơn cho phép bạn thực hiện các thao tác khác nhưlimit
vàorder
:
Dog.findAll({
limit: 10,
order: [
['name', 'DESC']
]
})
Cách chèn dữ liệu vào cơ sở dữ liệu
Chúng tôi có thể gọiDog.create()
truyền một đối tượng để tạo một hàng mới trong cơ sở dữ liệu:
const name = 'Roger'
const age = 8
const result = await Dog.create({ name, age })
Cách cập nhật dữ liệu
Sử dụngupdate()
phương pháp cập nhật giá trị trong bảng.
Trong ví dụ này, tôi đặt tuổi của 'Roger' là 9:
Post.update({
age: 9
}, {
where: {
name: 'Roger'
}
})
Di chuyển cáiwhere
thuộc tính sẽ cập nhật tất cả các hàng:
Post.update({
age: 10
})
Tải xuống miễn phí của tôiSổ tay Node.js
Các hướng dẫn nút khác:
- Giới thiệu về trình quản lý gói npm
- Giới thiệu về Node.js
- Yêu cầu HTTP bằng Axios
- Nơi lưu trữ ứng dụng Node.js
- Tương tác với API Google Analytics bằng Node.js
- Trình chạy gói nút npx
- Hướng dẫn package.json
- Npm cài đặt các gói ở đâu?
- Cách cập nhật Node.js
- Cách sử dụng hoặc thực thi một gói được cài đặt bằng npm
- Tệp package-lock.json
- Phiên bản ngữ nghĩa sử dụng npm
- Bạn có nên cam kết thư mục node_modules cho Git không?
- Cập nhật tất cả các phụ thuộc Node lên phiên bản mới nhất của chúng
- Phân tích cú pháp JSON với Node.js
- Tìm phiên bản đã cài đặt của gói npm
- Luồng Node.js
- Cài đặt phiên bản cũ hơn của gói npm
- Lấy thư mục hiện tại trong Node
- Cách đăng nhập một đối tượng trong Node
- Thể hiện chức năng từ tệp Node bằng cách sử dụng xuất
- Sự khác biệt giữa Node và Browser
- Thực hiện yêu cầu HTTP POST bằng Node
- Nhận dữ liệu nội dung yêu cầu HTTP bằng Node
- Bộ đệm nút
- Sơ lược về lịch sử Node.js
- Cách cài đặt Node.js
- Bạn cần biết bao nhiêu JavaScript để sử dụng Node?
- Cách sử dụng Node.js REPL
- Nút, chấp nhận các đối số từ dòng lệnh
- Xuất ra dòng lệnh bằng Node
- Chấp nhận đầu vào từ dòng lệnh trong Node
- Gỡ cài đặt gói npm với `` npm gỡ cài đặt ''
- gói npm toàn cầu hoặc cục bộ
- npm phụ thuộc và devDependencies
- Vòng lặp sự kiện Node.js
- Hiểu process.nextTick ()
- Hiểu setIm Instant ()
- Bộ phát sự kiện nút
- Xây dựng một máy chủ HTTP
- Thực hiện các yêu cầu HTTP với Node
- Mô-đun Node fs
- Yêu cầu HTTP trong Node bằng Axios
- Đọc tệp bằng Node
- Đường dẫn tệp nút
- Viết tệp bằng Node
- Số liệu thống kê về tệp nút
- Làm việc với bộ mô tả tệp trong Node
- Làm việc với các thư mục trong Node
- Mô-đun đường dẫn nút
- Mô-đun Node http
- Sử dụng WebSockets với Node.js
- Những điều cơ bản về cách làm việc với MySQL và Node
- Xử lý lỗi trong Node.js
- Hướng dẫn Pug
- Cách đọc các biến môi trường từ Node.js
- Cách thoát khỏi chương trình Node.js
- Mô-đun hệ điều hành Node
- Mô-đun sự kiện Node
- Nút, sự khác biệt giữa phát triển và sản xuất
- Cách kiểm tra xem tệp có tồn tại trong Node.js hay không
- Cách tạo tệp trống trong Node.js
- Cách xóa tệp bằng Node.js
- Cách lấy ngày cập nhật cuối cùng của tệp bằng Node.js
- Cách xác định một ngày có phải là hôm nay trong JavaScript hay không
- Cách ghi một đối tượng JSON vào tệp trong Node.js
- Tại sao bạn nên sử dụng Node.js trong dự án tiếp theo của mình?
- Chạy một máy chủ web từ bất kỳ thư mục nào
- Cách sử dụng MongoDB với Node.js
- Sử dụng Công cụ dành cho nhà phát triển của Chrome để gỡ lỗi ứng dụng Node.js
- Pnpm là gì?
- Danh sách tùy chọn Node.js Runtime v8
- Cách khắc phục lỗi "Thiếu quyền ghi" khi sử dụng npm
- Cách bật Mô-đun ES trong Node.js
- Cách sinh ra một quy trình con với Node.js
- Cách lấy cả nội dung được phân tích cú pháp và nội dung thô trong Express
- Cách xử lý tải lên tệp trong Node.js
- Sự phụ thuộc ngang hàng trong một mô-đun Node là gì?
- Cách ghi tệp CSV với Node.js
- Cách đọc tệp CSV với Node.js
- Mô-đun lõi Node
- Tăng số lượng nhiều thư mục cùng một lúc bằng Node.js
- Cách in canvas thành URL dữ liệu
- Cách tạo và lưu hình ảnh với Node.js và Canvas
- Cách tải xuống hình ảnh bằng Node.js
- Cách đổi tên hàng loạt tệp trong Node.js
- Cách lấy tên của tất cả các tệp trong một thư mục trong Node
- Cách sử dụng các lời hứa và chờ đợi với các hàm dựa trên cuộc gọi lại của Node.js
- Cách kiểm tra một gói npm cục bộ
- Cách kiểm tra phiên bản Node.js hiện tại khi chạy
- Cách sử dụng Sequelize để tương tác với PostgreSQL
- Cung cấp trang HTML bằng Node.js
- Cách giải quyết lỗi `use.pump không phải là hàm` trong Node.js