728x90
Svelte를 사용하여 MariaDB와 CRUD(생성, 읽기, 업데이트, 삭제) 기능을 구현하는 방법을 설명하겠습니다. 이 과정은 두 가지 주요 부분으로 나뉩니다:
- 백엔드 서버: MariaDB와 상호작용할 API를 제공하는 서버. Node.js와 Express를 사용하여 이 서버를 구축합니다.
- 프론트엔드 애플리케이션: Svelte를 사용하여 사용자 인터페이스를 구축합니다. 이 프론트엔드 애플리케이션이 백엔드 서버와 통신하여 CRUD 작업을 수행합니다.
1단계: 백엔드 서버 구축 (Node.js + Express + MariaDB)
프로젝트 설정:
mkdir backend cd backend npm init -y npm install express mariadb cors
서버 코드 작성 (
server.js
):const express = require('express'); const mariadb = require('mariadb'); const cors = require('cors'); const app = express(); const port = 3001; app.use(express.json()); app.use(cors()); // MariaDB connection pool const pool = mariadb.createPool({ host: 'localhost', user: 'your-username', password: 'your-password', database: 'your-database', connectionLimit: 5 }); // Create table (ensure this runs only once, or modify as needed) const createTable = async () => { const conn = await pool.getConnection(); await conn.query(` CREATE TABLE IF NOT EXISTS items ( id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(255) NOT NULL ) `); conn.end(); }; createTable(); // Create app.post('/items', async (req, res) => { const { name } = req.body; const conn = await pool.getConnection(); try { const result = await conn.query('INSERT INTO items (name) VALUES (?)', [name]); res.json({ id: result.insertId, name }); } catch (err) { res.status(500).json({ error: err.message }); } finally { conn.end(); } }); // Read app.get('/items', async (req, res) => { const conn = await pool.getConnection(); try { const rows = await conn.query('SELECT * FROM items'); res.json(rows); } catch (err) { res.status(500).json({ error: err.message }); } finally { conn.end(); } }); // Update app.put('/items/:id', async (req, res) => { const { id } = req.params; const { name } = req.body; const conn = await pool.getConnection(); try { await conn.query('UPDATE items SET name = ? WHERE id = ?', [name, id]); res.json({ id, name }); } catch (err) { res.status(500).json({ error: err.message }); } finally { conn.end(); } }); // Delete app.delete('/items/:id', async (req, res) => { const { id } = req.params; const conn = await pool.getConnection(); try { await conn.query('DELETE FROM items WHERE id = ?', [id]); res.json({ id }); } catch (err) { res.status(500).json({ error: err.message }); } finally { conn.end(); } }); app.listen(port, () => { console.log(`Server running on http://localhost:${port}`); });
2단계: 프론트엔드 애플리케이션 구축 (Svelte)
프로젝트 설정:
npx degit sveltejs/template frontend cd frontend npm install axios
Svelte 컴포넌트 작성 (
src/App.svelte
):<script> import axios from 'axios'; let items = []; let newItem = ''; let editItem = { id: null, name: '' }; const fetchItems = async () => { const response = await axios.get('http://localhost:3001/items'); items = response.data; }; const addItem = async () => { const response = await axios.post('http://localhost:3001/items', { name: newItem }); items = [...items, response.data]; newItem = ''; }; const startEdit = (item) => { editItem = { ...item }; }; const updateItem = async () => { await axios.put(`http://localhost:3001/items/${editItem.id}`, { name: editItem.name }); items = items.map(item => item.id === editItem.id ? editItem : item); editItem = { id: null, name: '' }; }; const deleteItem = async (id) => { await axios.delete(`http://localhost:3001/items/${id}`); items = items.filter(item => item.id !== id); }; fetchItems(); </script> <main> <h1>Items</h1> <input type="text" bind:value={newItem} placeholder="New item" /> <button on:click={addItem}>Add Item</button> {#if editItem.id !== null} <div> <input type="text" bind:value={editItem.name} placeholder="Edit item" /> <button on:click={updateItem}>Update Item</button> </div> {/if} <ul> {#each items as item} <li> {item.name} <button on:click={() => startEdit(item)}>Edit</button> <button on:click={() => deleteItem(item.id)}>Delete</button> </li> {/each} </ul> </main> <style> /* Add your styles here */ </style>
3단계: 실행 및 테스트
MariaDB 설정:
MariaDB 서버를 실행하고 데이터베이스를 설정합니다.
your-database
와 사용자 인증 정보를 적절하게 변경해 주세요.백엔드 서버 실행:
cd backend node server.js
프론트엔드 애플리케이션 실행:
cd frontend npm run dev
이제 http://localhost:5000
에서 Svelte 애플리케이션을 열면 MariaDB와 상호작용할 수 있습니다. CRUD 작업을 테스트해 보세요.
이 예제는 개발 환경에서 사용하는 기본적인 형태로, 실제 프로덕션 환경에서는 보안, 오류 처리, 데이터 유효성 검증, 그리고 데이터베이스 연결 관리를 추가적으로 고려해야 합니다.
728x90
반응형
'ChatGPT 대답' 카테고리의 다른 글
Python REST API Svelte (0) | 2024.07.21 |
---|---|
PHP와 MariaDB를 사용하여 CRUD (0) | 2024.07.21 |
React와 MariaDB를 사용하여 CRUD (0) | 2024.07.21 |
Vue.js와 MariaDB를 사용하여 CRUD (0) | 2024.07.21 |
Vue.js를 사용하여 SQLite와 CRUD (0) | 2024.07.21 |