Ví dụ nút Mysql2

Để truy cập cơ sở dữ liệu MySQL bằng Node. js, bạn cần có trình điều khiển MySQL. Hướng dẫn này sẽ sử dụng mô-đun "mysql", được tải xuống từ NPM

Để tải xuống và cài đặt mô-đun "mysql", hãy mở Command Terminal và thực hiện như sau

C. \Users\Tên của bạn>npm cài đặt mysql

Bây giờ bạn đã tải xuống và cài đặt trình điều khiển cơ sở dữ liệu mysql

Nút. js có thể sử dụng mô-đun này để thao tác với cơ sở dữ liệu MySQL

var mysql = yêu cầu['mysql'];

Tạo kết nối

Bắt đầu bằng cách tạo kết nối đến cơ sở dữ liệu

Sử dụng tên người dùng và mật khẩu từ cơ sở dữ liệu MySQL của bạn

demo_db_connection. js

var mysql = yêu cầu['mysql'];

var con = mysql. createConnection[{
  máy chủ. "máy chủ cục bộ",
  người dùng. "tên người dùng của bạn",
  mật khẩu. "mật khẩu của bạn"
}];

con. connect[function[err] {
  if [err] throw err;
  bảng điều khiển. log["Đã kết nối. "];
}];

Chạy ví dụ »

Lưu mã ở trên vào tệp có tên "demo_db_connection. js" và chạy tệp

Chạy "demo_db_connection. js"

C. \Users\Tên của bạn>nút demo_db_connection. js

Cái nào sẽ cho bạn kết quả này

Bây giờ bạn có thể bắt đầu truy vấn cơ sở dữ liệu bằng các câu lệnh SQL

Truy vấn cơ sở dữ liệu

Sử dụng các câu lệnh SQL để đọc từ [hoặc ghi vào] cơ sở dữ liệu MySQL. Điều này còn được gọi là "truy vấn" cơ sở dữ liệu

Nút. js và MySQL kết hợp rất tốt với nhau. Trong nút này. js MySQL, chúng ta sẽ xem xét cách bắt đầu từng bước với cả hai để xây dựng API REST cho báo giá bằng cách sử dụng Express js

Mục lục

Tại sao nút. hướng dẫn js MySQL

Nút. js đã được kết hợp phổ biến với cơ sở dữ liệu NoSQL, đặc biệt là Mongo DB. Nếu bạn di chuyển một codebase cũ hơn sang Node. js, bạn sẽ không có tùy chọn để chọn cơ sở dữ liệu. Hầu hết các hệ thống cũ hơn hoặc thậm chí các hệ thống mới đều sử dụng hệ thống quản lý cơ sở dữ liệu quan hệ như MySQL. Điều này dẫn đến nhu cầu về một Node từng bước. hướng dẫn js MySQL

Nếu bạn đang bắt đầu một dự án mới, đừng mù quáng sử dụng NoSQL như Mongodb. Video vui nhộn nhưng chính xác này từ năm 2010 về MySQL vs Mongo vẫn có ý nghĩa hoàn hảo

Sử dụng cơ sở dữ liệu NoSQL nếu dự án của bạn thực sự cần nó, cơ sở dữ liệu quan hệ sẽ đủ

Điều kiện tiên quyết cho nút. hướng dẫn js MySQL

  1. Bạn có nút. js được cài đặt trên máy của bạn [hoặc bộ chứa docker có thể chạy Node. js]. Chúng tôi sẽ sử dụng Node. js phiên bản 18 và npm 8. 6
  2. Bạn đã quen với cách Node. js hoạt động bình thường và cũng biết về Node. khung js. Chúng tôi sẽ sử dụng Express js cho hướng dẫn này
  3. Một số kiến ​​thức về git sẽ thực sự hữu ích
  4. Bạn có quyền truy cập vào phiên bản MySQL chạy cục bộ hoặc từ xa. Tôi khuyên bạn nên sử dụng MySQL hoặc PlanetScale từ xa. Bạn nên biết RDBMS hoạt động như thế nào
  5. Bạn có thể viết mã bằng IDE, tôi sẽ sử dụng mã VS nhưng bạn có thể sử dụng bất kỳ trình chỉnh sửa hoặc IDE nào cho Nút này. hướng dẫn js MySQL

Nút. các bước hướng dẫn js MySQL

Chúng tôi sẽ xây dựng một API REST đơn giản với Express js có thể đưa ra các trích dẫn. Trước khi đi sâu hơn vào các bước, tôi thực sự khuyên bạn nên xem lại REST [Chuyển trạng thái đại diện]. Tốt nhất bạn nên đọc các động từ REST và chạy một số lệnh cURL để POST API

Cho rằng bạn có Nút. js đang chạy [trên máy hoặc với Docker], chúng ta có thể bắt đầu với việc thiết lập Express trước

Thiết lập Express js cho Node. hướng dẫn js MySQL

Để thiết lập express, chúng ta sẽ sử dụng express-generator. Bạn có thể tạo một ứng dụng js nhanh mà không cần bất kỳ công cụ xem nào cho Nút này. js MySQL hướng dẫn với lệnh sau

npx express-generator --no-view --git nodejs-mysql

Để nhanh chóng kiểm tra đầu ra, hãy thực hiện như sau.

cd nodejs-mysql && npm install && DEBUG=nodejs-mysql:* npm start

Bạn sẽ thấy đầu ra bên dưới trên trình duyệt của mình

Có thể thấy ứng dụng express cơ bản đã tạo trong yêu cầu kéo này

Xóa thư mục chung

Vì chúng tôi đang xây dựng API REST để trích dẫn trong Nút này. js với Express chúng ta sẽ xóa thư mục chung. Chúng tôi không cần bất kỳ CSS hoặc js nào cho mục đích của hướng dẫn này vì chúng tôi sẽ xử lý JSON

Để xóa thư mục chung, hãy chạy lệnh sau

rm -rf public

Xóa các tuyến đường hiện có và tạo một tuyến đường mới cho báo giá

Tại thời điểm này, chúng tôi sẽ thực hiện một số thay đổi đối với các tuyến đường. Chúng tôi sẽ xóa tệp

rm -rf public
4 mà chúng tôi không cần nữa. Sau đó, chúng tôi sẽ thêm tệp
rm -rf public
5 giống như bên dưới

const express = require['express'];
const router = express.Router[];

/* GET quotes listing. */
router.get['/', function[req, res, next] {
res.json[{
data: [
{
quote: 'There are only two kinds of languages: the ones people complain about and the ones nobody uses.',
author: 'Bjarne Stroustrup'
}
],
meta: {
page: 1
}
}];
}];

module.exports = router;

Hiện tại,

rm -rf public
6 sẽ cung cấp đầu ra tĩnh chỉ có một trích dẫn như hình trên. Chúng tôi sẽ làm cho nó năng động trong các bước tiếp theo

Sau đó, chúng tôi sẽ cần liên kết tuyến trích dẫn với tệp

rm -rf public
7. Sau khi liên kết tệp
rm -rf public
7 của tôi trông như bên dưới

const express = require['express'];
const cookieParser = require['cookie-parser'];
const logger = require['morgan'];

const indexRouter = require['./routes/index'];
const quotesRouter = require['./routes/quotes'];

const app = express[];

app.use[logger['dev']];
app.use[express.json[]];
app.use[express.urlencoded[{ extended: false }]];
app.use[cookieParser[]];

app.use['/', indexRouter];
app.use['/quotes', quotesRouter];

module.exports = app;

Một điều nữa cần làm là thay đổi tệp

rm -rf public
9 để hiển thị đầu ra JSON thay cho hiển thị dạng xem/mẫu HTML. Sau khi thay đổi này, tệp
rm -rf public
9 trông như bên dưới

cd nodejs-mysql && npm install && DEBUG=nodejs-mysql:* npm start
2

Tôi cũng đã thay đổi tất cả

const express = require['express'];
const router = express.Router[];

/* GET quotes listing. */
router.get['/', function[req, res, next] {
res.json[{
data: [
{
quote: 'There are only two kinds of languages: the ones people complain about and the ones nobody uses.',
author: 'Bjarne Stroustrup'
}
],
meta: {
page: 1
}
}];
}];

module.exports = router;
1 thành
const express = require['express'];
const router = express.Router[];

/* GET quotes listing. */
router.get['/', function[req, res, next] {
res.json[{
data: [
{
quote: 'There are only two kinds of languages: the ones people complain about and the ones nobody uses.',
author: 'Bjarne Stroustrup'
}
],
meta: {
page: 1
}
}];
}];

module.exports = router;
2 vì nó hợp lý hơn. Nếu bạn muốn xem tất cả các thay đổi trong một lần, nó có sẵn trong yêu cầu kéo này

Bạn có thể xem những thay đổi cuối cùng bằng cách chạy đoạn mã sau trên dòng lệnh của mình

cd nodejs-mysql && npm install && DEBUG=nodejs-mysql:* npm start
5

Bạn sẽ thấy bên dưới khi bạn nhấn

const express = require['express'];
const router = express.Router[];

/* GET quotes listing. */
router.get['/', function[req, res, next] {
res.json[{
data: [
{
quote: 'There are only two kinds of languages: the ones people complain about and the ones nobody uses.',
author: 'Bjarne Stroustrup'
}
],
meta: {
page: 1
}
}];
}];

module.exports = router;
3 trên trình duyệt của mình

Thiết lập MySQL với bảng báo giá

Tại thời điểm này, đối với Nút này. js MySQL, chúng ta sẽ tạo một Quotes API. Người tiêu dùng cũng có thể lấy báo giá và thêm báo giá mới. Để kích hoạt tính năng này, chúng tôi sẽ sử dụng một bảng duy nhất có tên là

const express = require['express'];
const router = express.Router[];

/* GET quotes listing. */
router.get['/', function[req, res, next] {
res.json[{
data: [
{
quote: 'There are only two kinds of languages: the ones people complain about and the ones nobody uses.',
author: 'Bjarne Stroustrup'
}
],
meta: {
page: 1
}
}];
}];

module.exports = router;
4, cấu trúc của nó được đưa ra bên dưới

cd nodejs-mysql && npm install && DEBUG=nodejs-mysql:* npm start
8

Đây là một bảng đơn giản với 5 cột. Cái đầu tiên là

const express = require['express'];
const router = express.Router[];

/* GET quotes listing. */
router.get['/', function[req, res, next] {
res.json[{
data: [
{
quote: 'There are only two kinds of languages: the ones people complain about and the ones nobody uses.',
author: 'Bjarne Stroustrup'
}
],
meta: {
page: 1
}
}];
}];

module.exports = router;
5 khóa chính được tăng tự động. Sau đó là
const express = require['express'];
const router = express.Router[];

/* GET quotes listing. */
router.get['/', function[req, res, next] {
res.json[{
data: [
{
quote: 'There are only two kinds of languages: the ones people complain about and the ones nobody uses.',
author: 'Bjarne Stroustrup'
}
],
meta: {
page: 1
}
}];
}];

module.exports = router;
4 và
const express = require['express'];
const router = express.Router[];

/* GET quotes listing. */
router.get['/', function[req, res, next] {
res.json[{
data: [
{
quote: 'There are only two kinds of languages: the ones people complain about and the ones nobody uses.',
author: 'Bjarne Stroustrup'
}
],
meta: {
page: 1
}
}];
}];

module.exports = router;
7. Cả hai cột này đều là varchar

Sau đó là

const express = require['express'];
const router = express.Router[];

/* GET quotes listing. */
router.get['/', function[req, res, next] {
res.json[{
data: [
{
quote: 'There are only two kinds of languages: the ones people complain about and the ones nobody uses.',
author: 'Bjarne Stroustrup'
}
],
meta: {
page: 1
}
}];
}];

module.exports = router;
8 và
const express = require['express'];
const router = express.Router[];

/* GET quotes listing. */
router.get['/', function[req, res, next] {
res.json[{
data: [
{
quote: 'There are only two kinds of languages: the ones people complain about and the ones nobody uses.',
author: 'Bjarne Stroustrup'
}
],
meta: {
page: 1
}
}];
}];

module.exports = router;
9. Cả hai cột ngày đều có giá trị mặc định là
const express = require['express'];
const cookieParser = require['cookie-parser'];
const logger = require['morgan'];

const indexRouter = require['./routes/index'];
const quotesRouter = require['./routes/quotes'];

const app = express[];

app.use[logger['dev']];
app.use[express.json[]];
app.use[express.urlencoded[{ extended: false }]];
app.use[cookieParser[]];

app.use['/', indexRouter];
app.use['/quotes', quotesRouter];

module.exports = app;
0 nên chúng tôi không cần gửi các giá trị này từ mã. Cũng không phải vậy, updated_at sẽ được cập nhật tự động khi hàng được cập nhật vì điều này.
const express = require['express'];
const cookieParser = require['cookie-parser'];
const logger = require['morgan'];

const indexRouter = require['./routes/index'];
const quotesRouter = require['./routes/quotes'];

const app = express[];

app.use[logger['dev']];
app.use[express.json[]];
app.use[express.urlencoded[{ extended: false }]];
app.use[cookieParser[]];

app.use['/', indexRouter];
app.use['/quotes', quotesRouter];

module.exports = app;
1

Bạn có thể chạy phần trên để tạo bảng

const express = require['express'];
const router = express.Router[];

/* GET quotes listing. */
router.get['/', function[req, res, next] {
res.json[{
data: [
{
quote: 'There are only two kinds of languages: the ones people complain about and the ones nobody uses.',
author: 'Bjarne Stroustrup'
}
],
meta: {
page: 1
}
}];
}];

module.exports = router;
4, để điền vào một số trích dẫn hay liên quan đến lập trình, hãy chạy câu truy vấn SQL chèn sau

rm -rf public
7

Truy vấn trên sẽ thêm 15 dấu ngoặc kép vào bảng, đây sẽ là điểm khởi đầu tốt cho API nhận dấu ngoặc kép. Lưu ý rằng id 2 bị thiếu và điều này được thực hiện có mục đích. Bạn cũng có thể xem tệp init cơ sở dữ liệu tại đây

Nối dây nút. js với MySQL

Ở giai đoạn này, chúng tôi sẽ kết nối với MySQL từ Node. ứng dụng js express. Để làm nhiệm vụ này, chúng ta sẽ sử dụng thư viện Mysql2. Nếu bạn đang hỏi tại sao không phải là Mysql mặc định. Đó là bởi vì 2 lý do chính

  • Mysql2 có một trình bao bọc cho những lời hứa ngoài hộp
  • Mysql2 hỗ trợ nhanh hơn và an toàn hơn

Nếu bạn muốn so sánh trực tiếp hai thư viện này, vui lòng truy cập so sánh npm

Cài đặt mysql2 trong ứng dụng cấp tốc

Để bắt đầu truy vấn cơ sở dữ liệu MySQL bằng Nodejs, đầu tiên chúng ta sẽ cài đặt thư viện

const express = require['express'];
const cookieParser = require['cookie-parser'];
const logger = require['morgan'];

const indexRouter = require['./routes/index'];
const quotesRouter = require['./routes/quotes'];

const app = express[];

app.use[logger['dev']];
app.use[express.json[]];
app.use[express.urlencoded[{ extended: false }]];
app.use[cookieParser[]];

app.use['/', indexRouter];
app.use['/quotes', quotesRouter];

module.exports = app;
3 với npm

rm -rf public
9

Lệnh trên sẽ cài đặt thư viện

const express = require['express'];
const cookieParser = require['cookie-parser'];
const logger = require['morgan'];

const indexRouter = require['./routes/index'];
const quotesRouter = require['./routes/quotes'];

const app = express[];

app.use[logger['dev']];
app.use[express.json[]];
app.use[express.urlencoded[{ extended: false }]];
app.use[cookieParser[]];

app.use['/', indexRouter];
app.use['/quotes', quotesRouter];

module.exports = app;
3 và cũng thêm nó vào tệp
const express = require['express'];
const cookieParser = require['cookie-parser'];
const logger = require['morgan'];

const indexRouter = require['./routes/index'];
const quotesRouter = require['./routes/quotes'];

const app = express[];

app.use[logger['dev']];
app.use[express.json[]];
app.use[express.urlencoded[{ extended: false }]];
app.use[cookieParser[]];

app.use['/', indexRouter];
app.use['/quotes', quotesRouter];

module.exports = app;
5. Bước tiếp theo là cập nhật tuyến đường
const express = require['express'];
const cookieParser = require['cookie-parser'];
const logger = require['morgan'];

const indexRouter = require['./routes/index'];
const quotesRouter = require['./routes/quotes'];

const app = express[];

app.use[logger['dev']];
app.use[express.json[]];
app.use[express.urlencoded[{ extended: false }]];
app.use[cookieParser[]];

app.use['/', indexRouter];
app.use['/quotes', quotesRouter];

module.exports = app;
6 để hiển thị các trích dẫn từ cơ sở dữ liệu thay vì trích dẫn tĩnh

Hiển thị báo giá - Nhận API

Khi bạn nhấn

const express = require['express'];
const cookieParser = require['cookie-parser'];
const logger = require['morgan'];

const indexRouter = require['./routes/index'];
const quotesRouter = require['./routes/quotes'];

const app = express[];

app.use[logger['dev']];
app.use[express.json[]];
app.use[express.urlencoded[{ extended: false }]];
app.use[cookieParser[]];

app.use['/', indexRouter];
app.use['/quotes', quotesRouter];

module.exports = app;
7 sau khi khởi động ứng dụng express js, bạn có thể thấy nội dung như bên dưới

cd nodejs-mysql && npm install && DEBUG=nodejs-mysql:* npm start
0

Hãy lấy dữ liệu tương tự từ bảng cơ sở dữ liệu của chúng tôi

const express = require['express'];
const router = express.Router[];

/* GET quotes listing. */
router.get['/', function[req, res, next] {
res.json[{
data: [
{
quote: 'There are only two kinds of languages: the ones people complain about and the ones nobody uses.',
author: 'Bjarne Stroustrup'
}
],
meta: {
page: 1
}
}];
}];

module.exports = router;
4 và ứng biến thêm về nó

Để hiển thị nhiều trích dẫn, chúng tôi sẽ thay đổi phản hồi tĩnh bằng phản hồi động. Để làm được điều đó, chúng ta sẽ cần kết nối với cơ sở dữ liệu. Hãy tạo một tệp cấu hình có thông tin đăng nhập cơ sở dữ liệu như bên dưới có tên là

const express = require['express'];
const cookieParser = require['cookie-parser'];
const logger = require['morgan'];

const indexRouter = require['./routes/index'];
const quotesRouter = require['./routes/quotes'];

const app = express[];

app.use[logger['dev']];
app.use[express.json[]];
app.use[express.urlencoded[{ extended: false }]];
app.use[cookieParser[]];

app.use['/', indexRouter];
app.use['/quotes', quotesRouter];

module.exports = app;
9 ở thư mục gốc của dự án [ngoài ứng dụng. js]

cd nodejs-mysql && npm install && DEBUG=nodejs-mysql:* npm start
1

Chúng tôi đã tạo một tệp

const express = require['express'];
const cookieParser = require['cookie-parser'];
const logger = require['morgan'];

const indexRouter = require['./routes/index'];
const quotesRouter = require['./routes/quotes'];

const app = express[];

app.use[logger['dev']];
app.use[express.json[]];
app.use[express.urlencoded[{ extended: false }]];
app.use[cookieParser[]];

app.use['/', indexRouter];
app.use['/quotes', quotesRouter];

module.exports = app;
9 có thông tin đăng nhập cho cơ sở dữ liệu được lấy từ biến môi trường. Nếu các biến môi trường không được đặt, chúng tôi sử dụng các giá trị dự phòng

Sau đó, tạo tệp

cd nodejs-mysql && npm install && DEBUG=nodejs-mysql:* npm start
21 trong thư mục
cd nodejs-mysql && npm install && DEBUG=nodejs-mysql:* npm start
22 trông giống như sau

cd nodejs-mysql && npm install && DEBUG=nodejs-mysql:* npm start
2

Trong trình bao bọc DB đơn giản này, chúng tôi tạo một nhóm kết nối cho MySQL. Vì cấu hình của chúng tôi có

cd nodejs-mysql && npm install && DEBUG=nodejs-mysql:* npm start
23 trên 2 nên nó sẽ tạo tối đa 2 kết nối tới cơ sở dữ liệu. Sau đó, có một phương thức
cd nodejs-mysql && npm install && DEBUG=nodejs-mysql:* npm start
24 đơn giản được đưa ra có thể chạy truy vấn SQL với các tham số đã cho

Sau đó, tạo một tệp

cd nodejs-mysql && npm install && DEBUG=nodejs-mysql:* npm start
25 với nội dung sau

cd nodejs-mysql && npm install && DEBUG=nodejs-mysql:* npm start
3

Cho đến thời điểm này, đây là một tệp rất đơn giản bao gồm dịch vụ

cd nodejs-mysql && npm install && DEBUG=nodejs-mysql:* npm start
26 được tạo ở trên. Sau đó, có một hàm
cd nodejs-mysql && npm install && DEBUG=nodejs-mysql:* npm start
27 hiển thị với mô-đun. xuất khẩu. Coi chừng điều này sẽ truy vấn tất cả các bản ghi trên cơ sở dữ liệu sẽ là 15 ở giai đoạn này. Chúng tôi sẽ làm cho nó được phân trang trong bước tiếp theo

Do đó, chúng tôi sẽ kết nối chức năng

cd nodejs-mysql && npm install && DEBUG=nodejs-mysql:* npm start
27 trong
cd nodejs-mysql && npm install && DEBUG=nodejs-mysql:* npm start
25 với tuyến đường
const express = require['express'];
const cookieParser = require['cookie-parser'];
const logger = require['morgan'];

const indexRouter = require['./routes/index'];
const quotesRouter = require['./routes/quotes'];

const app = express[];

app.use[logger['dev']];
app.use[express.json[]];
app.use[express.urlencoded[{ extended: false }]];
app.use[cookieParser[]];

app.use['/', indexRouter];
app.use['/quotes', quotesRouter];

module.exports = app;
6 trong tệp
cd nodejs-mysql && npm install && DEBUG=nodejs-mysql:* npm start
51 như bên dưới

cd nodejs-mysql && npm install && DEBUG=nodejs-mysql:* npm start
4

Tôi nghĩ đây là thời điểm thích hợp để cài đặt

cd nodejs-mysql && npm install && DEBUG=nodejs-mysql:* npm start
52, tôi khuyên bạn nên cài đặt nó trên toàn cầu như bên dưới

cd nodejs-mysql && npm install && DEBUG=nodejs-mysql:* npm start
5

Với gật đầu, bạn có thể khởi động lại Node. js trên mỗi lần thay đổi mã, điều này rất hữu ích khi phát triển. Bạn có thể chạy ứng dụng ngay bây giờ với

cd nodejs-mysql && npm install && DEBUG=nodejs-mysql:* npm start
52 như bên dưới để kiểm tra kết quả trên trình duyệt

cd nodejs-mysql && npm install && DEBUG=nodejs-mysql:* npm start
6

Khi bạn nhấn

const express = require['express'];
const cookieParser = require['cookie-parser'];
const logger = require['morgan'];

const indexRouter = require['./routes/index'];
const quotesRouter = require['./routes/quotes'];

const app = express[];

app.use[logger['dev']];
app.use[express.json[]];
app.use[express.urlencoded[{ extended: false }]];
app.use[cookieParser[]];

app.use['/', indexRouter];
app.use['/quotes', quotesRouter];

module.exports = app;
7 trên trình duyệt, bạn sẽ thấy một kết quả tương tự hoặc nhiều
cd nodejs-mysql && npm install && DEBUG=nodejs-mysql:* npm start
55 trên trình duyệt

Nếu bạn quay lại và kiểm tra bảng điều khiển nơi bạn đã chạy

cd nodejs-mysql && npm install && DEBUG=nodejs-mysql:* npm start
52, bạn sẽ có thể thấy nội dung như bên dưới

Nếu bạn thay đổi bất kỳ tệp nào, máy chủ sẽ khởi động lại do gật đầu. Trong bước tiếp theo của Nút này. js Hướng dẫn MySQL với express js, chúng ta sẽ phân trang kết quả 10 trích dẫn trên trang. Nếu bạn muốn xem các thay đổi về mã mà chúng tôi đã thực hiện để lấy các trích dẫn từ cơ sở dữ liệu thì đây là yêu cầu kéo

Phân trang các trích dẫn cho Node. hướng dẫn js MySQL

Tại thời điểm này, chúng tôi sẽ bắt đầu phân trang các trích dẫn 10 trích dẫn trên mỗi trang. Đã được đưa vào tệp

cd nodejs-mysql && npm install && DEBUG=nodejs-mysql:* npm start
57 ở dòng số. 14 là
cd nodejs-mysql && npm install && DEBUG=nodejs-mysql:* npm start
58 chúng tôi sẽ sử dụng nó ngay bây giờ

Chúng tôi sẽ thêm một

cd nodejs-mysql && npm install && DEBUG=nodejs-mysql:* npm start
59 vào thư mục gốc trông giống như bên dưới

cd nodejs-mysql && npm install && DEBUG=nodejs-mysql:* npm start
7

Chúng tôi sẽ sử dụng người trợ giúp này. js để tính phần bù. Hàm khác sẽ trả về một mảng trống nếu biến rows trống, ngược lại, nó sẽ trả về các hàng

Tiếp theo, chúng tôi sẽ cập nhật truy vấn để nhận báo giá trong dịch vụ

cd nodejs-mysql && npm install && DEBUG=nodejs-mysql:* npm start
25. Dịch vụ báo giá thay đổi trông giống như dưới đây

cd nodejs-mysql && npm install && DEBUG=nodejs-mysql:* npm start
8

Sự khác biệt chính của tính năng phân trang so với dịch vụ trích dẫn cũ hơn là truy vấn đã bù đắp và giới hạn được chuyển cho nó. Lưu ý rằng chúng tôi đang sử dụng một câu lệnh đã chuẩn bị để đảm bảo an toàn cho truy vấn khỏi SQL injection. Bạn có thể đọc thêm về ngăn chặn SQL injection với các câu lệnh đã chuẩn bị trong câu trả lời stackoverflow này

Tệp khác được thay đổi để có tính năng phân trang là

cd nodejs-mysql && npm install && DEBUG=nodejs-mysql:* npm start
51. Các trích dẫn mới. lộ trình js bây giờ trông giống như bên dưới

cd nodejs-mysql && npm install && DEBUG=nodejs-mysql:* npm start
9

Thay đổi duy nhất ở đây là chúng ta chuyển tham số truy vấn

cd nodejs-mysql && npm install && DEBUG=nodejs-mysql:* npm start
82 cho hàm
cd nodejs-mysql && npm install && DEBUG=nodejs-mysql:* npm start
27. Điều này sẽ cho phép phân trang như
cd nodejs-mysql && npm install && DEBUG=nodejs-mysql:* npm start
84, v.v.

Nếu bạn chạy ứng dụng và nhấn vào trình duyệt với

cd nodejs-mysql && npm install && DEBUG=nodejs-mysql:* npm start
85, bạn sẽ thấy 5 trích dẫn như bên dưới

Vì vậy, những gì đã xảy ra ở đây, thay đổi chính là cách chúng tôi xây dựng truy vấn

cd nodejs-mysql && npm install && DEBUG=nodejs-mysql:* npm start
86. Tùy thuộc vào số trang, chúng tôi tính toán độ lệch và chuyển một truy vấn khác

  • Đối với trang 1, truy vấn là
    cd nodejs-mysql && npm install && DEBUG=nodejs-mysql:* npm start
    87
  • Đối với trang 2, truy vấn trở thành
    cd nodejs-mysql && npm install && DEBUG=nodejs-mysql:* npm start
    88

Như bạn thấy, phép tính bù giúp bạn có thể nhận được tập hợp 10 dấu ngoặc kép tiếp theo trong đó 10 là số không. các mục chúng tôi muốn liệt kê theo cấu hình của chúng tôi. Đây có thể là một thay đổi lớn cần hiểu ngay trong một lần, vui lòng xem yêu cầu kéo này để biết tất cả mã đã thay đổi để tính năng phân trang đi vào hoạt động

Bước tiếp theo

Khi bạn có một API GET cơ bản và đang chạy, bạn có thể thêm nhiều tính năng hơn vào nó như

  • Thêm một tuyến đường mới như
    cd nodejs-mysql && npm install && DEBUG=nodejs-mysql:* npm start
    89 để nhận một trích dẫn theo id
  • Bạn có thể thêm bộ lọc trích dẫn/khả năng tìm kiếm như của tác giả chẳng hạn
  • Bạn cũng có thể tìm kiếm theo từ bằng cách sử dụng SQL Giống như
    rm -rf public
    70 có thể đưa ra tất cả các trích dẫn có từ máy tính trong đó
  • Để làm cho vấn đề trở nên thú vị khi thực hành, hãy thêm một cột mới có tên là
    rm -rf public
    71 và cập nhật API

Tôi sẽ để bạn quyết định về những thứ khác mà bạn muốn xây dựng dựa trên điểm cuối API GET báo giá REST mới được tạo. Bước tiếp theo là tạo API POST để tạo báo giá mới

Lưu báo giá mới - POST API cho Node. hướng dẫn js MySQL

Để tạo báo giá mới, chúng tôi sẽ cần API bài đăng. Trước khi bắt tay vào việc, hãy làm rõ các giả định của chúng ta

  1. Chúng tôi sẽ không sử dụng thư viện xác thực phức tạp như Joi cho bản demo này
  2. Chúng tôi sẽ giữ mã phản hồi đơn giản nhất có thể
  3. Chúng tôi sẽ không xây dựng các điểm cuối PUT [cập nhật] và XÓA. Vì bạn có thể chạy CẬP NHẬT truy vấn CHÈN và XÓA sẽ tương tự với sự khác biệt của ID/ID báo giá được chuyển trong phần thân yêu cầu

Hãy bắt đầu bẻ khóa mã cho API báo giá POST. Điều đầu tiên là chúng ta sẽ thêm đường dẫn báo giá POST vào tệp

cd nodejs-mysql && npm install && DEBUG=nodejs-mysql:* npm start
51 ngay phía trên dòng
rm -rf public
73

rm -rf public
0

Sau đó, chúng tôi sẽ thêm các hàm

rm -rf public
74 và
rm -rf public
75 trong tệp dịch vụ
cd nodejs-mysql && npm install && DEBUG=nodejs-mysql:* npm start
25 và hiển thị
rm -rf public
75 trong mô-đun. xuất khẩu như dưới đây

rm -rf public
1

Tôi biết việc xác thực còn hơi nguyên thủy nhưng hiện tại nó đã hoạt động. Cách tốt hơn để làm điều đó là sử dụng Joi hoặc thư viện xác thực tương tự. Tiếp theo, hãy thêm một trình xử lý lỗi mới để hiển thị xác thực của chúng tôi hoặc các lỗi khác dưới dạng phản hồi JSON trong tệp

rm -rf public
78 như bên dưới

rm -rf public
2

Đảm bảo đặt nó ngay phía trên dòng

rm -rf public
79 để chúng được thực thi sau các tuyến đường. Bây giờ bạn có thể khởi động ứng dụng của mình và thử các lệnh cURL bên dưới

rm -rf public
3

Dưới đây là đầu ra của cả hai lệnh cURL

Tùy thuộc vào cấu hình và bản ghi cơ sở dữ liệu, bạn có thể gặp lỗi

rm -rf public
90. Chỉ cần thay đổi trích dẫn thành một cái gì đó khác và thử. Mã thay đổi cho API trích dẫn POST nằm trong yêu cầu kéo này

Bạn có thể tìm thấy rất nhiều trích dẫn để thử ở đây

Vậy là bạn đã có API RESTful cơ bản dành cho báo giá có thể tạo báo giá mới với điểm cuối POST. Có một điểm cuối GET để lấy dấu ngoặc kép với phân trang

Nếu bạn muốn thử một DB được lưu trữ, bạn có thể kiểm tra Nút này. hướng dẫn js HarperDB

TLDR;

Vì tất cả mã nằm trong kho lưu trữ Github công khai, bạn có thể bắt đầu ngay lập tức bằng cách chạy các lệnh sau

  1. Sao chép kho lưu trữ.
    rm -rf public
    91
  2. Sau đó chạy
    rm -rf public
    92
  3. Sau đó thực hiện
    rm -rf public
    93
  4. Do đó chạy.
    rm -rf public
    94
  5. Sau đó nhấn
    rm -rf public
    95 trên trình duyệt yêu thích của bạn
  6. Bạn sẽ thấy một cái gì đó như dưới đây

Bạn có thể xem mã và thử xem toàn bộ mọi thứ được ghép lại với nhau như thế nào trong Nút này. js MySQL hướng dẫn với Express Js để có dấu ngoặc kép REST API. API này có thể hoạt động như một cơ sở tốt cho một Nút. js vi dịch vụ

Bạn có thể cập bến ứng dụng API REST theo hướng dẫn từng bước này. Sau khi ứng dụng đó được cập nhật, bạn có thể dễ dàng lưu trữ ứng dụng đó trên một thứ gì đó như Google Cloud Run. Nếu bạn muốn bắt đầu thử nghiệm nhanh chóng mà không cần Docker, tôi khuyên bạn nên sử dụng Glitch. Bạn có thể thử 3 Nút. tùy chọn lưu trữ miễn phí js nữa

Phần kết luận

Tạo API REST bằng Node. js và MySQL không quá khó

Một số thứ không được quan tâm trong Nút này. js Hướng dẫn MySQL với Express nhưng đây là một điểm khởi đầu tuyệt vời

Làm cách nào để sử dụng MySQL2 trong nodejs?

Dưới đây là cách sử dụng MySQL trong Node theo năm bước đơn giản. .
Tạo một dự án mới. mkdir kiểm tra mysql && cd kiểm tra mysql
Tạo một gói. tập tin json. npm init -y
Cài đặt mô-đun mysql. npm cài đặt mysql
Tạo một ứng dụng. js và sao chép đoạn mã bên dưới [chỉnh sửa trình giữ chỗ cho phù hợp]
Chạy tập tin. ứng dụng nút

MySQL2 là gì?

Dự án MySQL2 là sự tiếp nối của MySQL-Native . Mã trình phân tích cú pháp giao thức đã được viết lại từ đầu và api đã thay đổi để phù hợp với mysqljs/mysql phổ biến. Nhóm MySQL2 đang làm việc cùng với nhóm mysqljs/mysql để tìm ra mã được chia sẻ và chuyển nó vào tổ chức mysqljs.

Làm cách nào để chèn nhiều hàng trong mysql bằng nút js?

var mysql = require['node-mysql']; . tạo kết nối [{. }]; . params"; var giá trị = [ ['demian', 'demian@gmail. com', 1], ['john', 'john@gmail. com', 2], ['mark', 'mark@gmail. com', 3], ['pete', 'pete@gmail. com', 4] ];

Làm cách nào để kết nối MySQL với Sequelize node js?

Kết nối MySQL với Node JS. .
Mở máy chủ web Express
Thêm dữ liệu cấu hình cho cơ sở dữ liệu MySQL hiện có
Mở một phần tiếp theo
Trong phần tiếp theo, hãy tạo một mô hình hướng dẫn
Viết bộ điều khiển
Xác định tất cả các tuyến để xử lý từng chức năng CRUD
mở người đưa thư
Kiểm tra API REST CRUD

Chủ Đề