페이징네이션은 전체 데이터셋을 일정한 크기로 나누어 페이지별로 데이터를 제공하는 방식입니다.
이를 통해 한 번에 모든 데이터를 불러오는 부담을 줄이고, 사용자는 필요한 데이터를 쉽게 탐색할 수 있습니다.
일반적으로 페이지 번호와 페이지당 항목 수를 사용해 특정 페이지의 데이터를 가져옵니다.
1. Node.js 프로젝트 설정하기
Express는 웹 서버를 구축하는 데 사용하고, MySQL과 MongoDB 연결을 위해 각각 mysql과 mongoose를 사용
mkdir pagination-example
cd pagination-example
npm init -y
npm install express mysql mongoose
2. MySQL에서 페이징네이션 구현하기
1) 데이터베이스 설정
간단한 users 테이블을 생성
CREATE TABLE users (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(100),
email VARCHAR(100)
);
2) Node.js 코드
express를 사용해 간단한 서버를 설정하고, MySQL에서 페이징네이션을 구현
page와 limit 파라미터를 통해 페이지 번호와 페이지당 항목 수를 받아 해당 페이지의 데이터를 쿼리
const express = require('express');
const mysql = require('mysql');
const app = express();
const port = 3000;
const db = mysql.createConnection({
host: 'localhost',
user: 'root',
password: 'password',
database: 'test'
});
db.connect(err => {
if (err) throw err;
console.log('MySQL Connected...');
});
app.get('/users', (req, res) => {
const page = parseInt(req.query.page) || 1;
const limit = parseInt(req.query.limit) || 10;
const offset = (page - 1) * limit;
const sql = `SELECT * FROM users LIMIT ${limit} OFFSET ${offset}`;
db.query(sql, (err, results) => {
if (err) throw err;
res.json({
page,
limit,
results
});
});
});
app.listen(port, () => {
console.log(`Server running on port ${port}`);
});
3. MongoDB에서 페이징네이션 구현하기
1) 데이터베이스 설정
users 컬렉션을 사용
const mongoose = require('mongoose');
mongoose.connect('mongodb://localhost:27017/test', { useNewUrlParser: true, useUnifiedTopology: true });
const UserSchema = new mongoose.Schema({
name: String,
email: String
});
const User = mongoose.model('User', UserSchema);
2) Node.js 코드
mongoose를 사용해 MongoDB에서 페이징네이션을 구현
skip과 limit 메서드를 사용해 특정 페이지의 데이터를 가져오기
app.get('/users', async (req, res) => {
const page = parseInt(req.query.page) || 1;
const limit = parseInt(req.query.limit) || 10;
const skip = (page - 1) * limit;
try {
const users = await User.find().skip(skip).limit(limit);
res.json({
page,
limit,
results: users
});
} catch (err) {
res.status(500).json({ error: err.message });
}
});
페이징네이션은 대용량 데이터를 효율적으로 관리하고, 사용자에게 빠르고 유용한 정보를 제공하는 데 중요한 역할을 합니다. 다양한 상황에 맞게 페이징네이션을 적용해 보시기 바랍니다.
반응형
'개발정리 (nodeJS)' 카테고리의 다른 글
[nodeJS] Node.js에서 세션 관리 구현하기 (0) | 2024.05.29 |
---|---|
[nodeJS] Node.js에서 스케줄링 작업 자동화하기 (0) | 2024.05.28 |
[nodeJS] Node.js와 redis 연동하기 (0) | 2024.05.07 |
[nodeJS] Node.js로 자연어 처리하기 (0) | 2024.05.03 |
[nodeJS] nodeJS에서 console.log 사용하지 않고 디버깅하기 (0) | 2024.03.25 |