
DataBase๐ฑ ์ฌ๋ฌ ์ฌ์ฉ์์ ์์ฉ ํ๋ก๊ทธ๋จ์ด ๊ณต๋์ผ๋ก ์ฌ์ฉํ๋ ๋ฐ์ดํฐ๋ค์ ์งํฉ
DBMS( DataBase Management System )DataBase ํ์์ฑDataBase ํน์ง๐ฑ ์ค์๊ฐ ์ ๊ทผ์ฑ, ์ง์์ ์ธ ๋ณํ, ๋์ ๊ณต์ , ๋ด์ฉ์ ๋ํ ์ฐธ์กฐ
Database/DBMS์ ์ข
๋ฅNoSQL๐ฑ ์ฌ์ ์์ ์์ด ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ฌ์ฉ ๊ฐ๋ฅ
๋ฐ์ดํฐ๋ฒ ์ด์ค ์์ ์ ํฌ๊ฒ ๊ด์ฌํ์ง ์๊ณ ํ๋ก์ ํธ๋ฅผ ๋น ๋ฅด๊ฒ ์งํ ๊ฐ๋ฅ
MongoDB๐ฑ
Document DB: ์๋ฃ๋ฅผ Document( ๋ฌธ์ )๋ก ์ ์ฅ
Database > Collection > Document
_id๊ฐ ์กด์ฌMongoDB ์ค์นํ๊ธฐmongod๋ฅผ ์คํํ ์ ์๋ค๋ฉด ์ค์น๋ ๊ฒ !mongosh: MongoDB ์ ์ด ๊ฐ๋ฅํ ์์ด ์ด๋ฆผMongoose๐ฑ ๊ฐ์ฅ ๋ํ์ ์ธ MongoDB ODM( object document mapping )
Join์ ์ ๊ณตํ์ง ์์ โ aggregate๋ผ๋ ๋ณต์กํ ์ฟผ๋ฆฌ ์์ฑํด์ผ ํจpopulate๋ฅผ ํตํด aggregate ์์ฑ ์์ด๋ ๊ฐ๋จํ๊ฒ ๊ตฌํ ๊ฐ๋ฅMongoose ์ฌ์ฉํ๊ธฐ๐ฑ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ฐ๊ฒฐ โ ์คํค๋ง ์ ์ โ ๋ชจ๋ธ ์์ฑ โ ๋ชจ๋ธ ์ฌ์ฉ
npm i mongoosedb.js ์์ฑ: DB ๊ด๋ จ ์ค์ index.js: ์ํธ๋ฆฌ ํฌ์ธํธ์ db.js import// db.js
import mongoose from 'mongoose';
mongoose.connect(`${MongoDB URL}${DB์ ์ด๋ฆ}`);
const database = mongoose.connection; // ํ์ฌ DB ์ฐ๊ฒฐ ์ํ ์ ๋ณด๋ฅผ ์ ์ฅํ๋ ๊ฐ์ฒด
// on ๋ฉ์๋๋ก ์๋ฌ ๋ฐ์ ์ ์คํ๋๋ ๋์ ์ ์
database.on('error', (err) => {
console.log('Database Error!', err);
});
// once ๋ฉ์๋๋ก ์ต์ด ์ฐ๊ฒฐ ์ ํ ๋ฒ ์คํ๋๋ ๋์ ์ ์
database.once('open', () => {
console.log('DB connected');
});// post.js
import { Schema } from 'mongoose';
const PostSchema = new Schema( // ์คํค๋ง ๊ฐ์ฒด ์์ฑ
{
title: String,
content: String,
required: true,
},
{
timestamps: true
},
);// ์์ ์์ฑํ post.js์ ์ด์ด์ ์์ฑ
const Post = mongoose.model('Post', PostSchema);
// ์์ฑํ ์คํค๋ง ๊ธฐ๋ฐ ๋ชจ๋ธ ๊ฐ์ฒด ์์ฑ
// ์ฒซ ๋ฒ์งธ ์ธ์: ๋ชจ๋ธ์ ์ด๋ฆ, ์ค์ ๋ฐ์ดํฐ๋ฒ ์ด์ค์์ colliction์ ์ด๋ฆ
// ๋ ๋ฒ์งธ ์ธ์: ์คํค๋ง ๊ฐ์ฒด
export default Post;| CRUD | ๋ชจ๋ธ ๊ฐ์ฒด์ ๋ฉ์๋ |
|---|---|
| Create | create |
| Read | find, findeById, findOne |
| Update | updateOne, updateMany, findByIdAndUpdate, findOneAndUpdate |
| Delete | deleteOne ,deleteMany, findByIdAndDelete, findOneAndDelete |
| ๊ธฐํ | save |
๊ฐ๋จํ API ์ ์ํ๊ธฐtryโฆcatch๋ก ์์ธ ์ฒ๋ฆฌ !!CreatepostsRouter.post('/', async (req, res) => {
const { title, cocntent } =req.body;
try{
awiat Post.create({ title, content });
res.send('Post Successfully Created');
} catch (err) {
res.status(500).send('Server Error');
}
});
ReadpostsRouter.get('/', async (req, res) => {
try{
const allPosts = await Post.find({})
res.json(allPosts);
} catch (err) {
res.status(500).send('Server Error');
}
});
postsRouter.get('/:id', async (req, res) => {
const { id } =req.params;
try{
const foundPost = await Post.findById(id);
if(!foundPost) res.status(404).send('Post not found');
else res.json(foundPosts);
} catch (err) {
res.status(500).send('Server Error');
return;
}
});
UpdatepostsRouter.put('/:id', async (req, res) => {
const { id } =req.params;
const { title, cocntent } =req.body;
try{
const foundPost = await Post.findByIdAndUpdate(id, {
title,
content,
});
if(!foundPost) res.status(404).send('Post not found');
else res.json(foundPosts);
} catch (err) {
res.status(500).send('Server Error');
}
});
DeletepostsRouter.put('/:id', async (req, res) => {
const { id } =req.params;
try{
const foundPost = await Post.findByIdAndDelete(id);
if(!foundPost) res.status(404).send('Post not found');
else res.json(foundPosts);
} catch (err) {
res.status(500).send('Server Error');
}
});