ํ์ด์ด๋ฒ ์ด์ค๋ ๊ตฌ๊ธ์ NoSQL์ด๋ค.
MongoDB์ ํจ๊ป ๋ฌธ์ํ์ข
๋ฅ์ ํด๋นํ๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ด๋ค.
ํ์ด์ด๋ฒ ์ด์ค ์ฌ์ดํธ์ ์์์ ํจ๊ป ์ ์ค๋ช ๋์ด ์์ด์ ์ฒ์ ์ ๊ทผํ๋ ๋ฐ์๋ ๋ฌด๋ฆฌ์์ด ์ฌ์ฉํ ์ ์์๋ค.
๋จผ์ firebase console๋ก ์ด๋ํด์ ๋ก๊ทธ์ธ์ ํ๋ค.
์ด๋ฏธ์ง์ + ํ๋ก์ ํธ ์ถ๊ฐ
๋ฅผ ๋๋ฌ์ ํ๋ก์ ํธ๋ฅผ ์ถ๊ฐํด์ค๋ค.
ํ๋ก์ ํธ์ด๋ฆ์ ์๋ฌด๊ฑฐ๋ ์ ๋ ฅ ํ ๊ณ์์ ๋๋ฅธ๋ค.
๋๋ ์ ๋๋ฆฌํฑ์ค๋ ๋๋๊ฒ ๋ ํธํด์ ๊ป๋ค. ๊ทธ๋ฆฌ๊ณ ํ๋ก์ ํธ ๋ง๋ค๊ธฐ๋ฅผ ๋๋ฅธ๋ค.
์ด๋ ๊ฒ ํ๋ก์ ํธ ์์ฑ์ด ๋๋๊ณ ๊ณ์์ ๋๋ฅด๋ฉด anything ํ๋ก์ ํธ๋ก ์๋ ์ด๋๋๋ค.
์ผ์ชฝ ์ ๋ฉ๋ด๋ฒํผ์ ๋๋ฅด๋ฉด ์ผ์ชฝ์์ ๋ค๋น๋ฐ๊ฐ ๋์จ๋ค.
์ฌ๊ธฐ์ Realtime Database์ ๋ค์ด๊ฐ์ DB๋ฅผ ์์ฑํด์ค ๊ฒ์ด๋ค.
๋ฐ์ดํฐ๋ฒ ์ด์ค๋ง๋ค๊ธฐ๋ฅผ ๋๋ฅธ๋ค.
์ด๋๋๋ผ๋ ์๊ด์์ผ๋ ์๋ฌด๊ฑฐ๋ ๊ณ ๋ฅด๊ณ ๋ค์.
์ ๊ธ๋ชจ๋๋ก ์์ํ๋ฉด ๊ท์น์์ ์ง์ ํ๋๋ก๋ง ์ฝ๊ธฐ ์ฐ๊ธฐ ๊ถํ์ด ์๊ธฐ๋ฏ๋ก ์ผ๋จ์ ํ ์คํธ๋ชจ๋์์ ์์ํ๋ค. ํ ์คํธ๋ชจ๋๋ก ์์ํ๋ฉด 30์ผ๋์์ ๋๊ตฌ๋ ์ง DB๋ฅผ ์ฝ๊ณ ์์ ํ ์ ์๋๋ก ์๋์ผ๋ก ๊ท์น์ ์ค์ ํด์ค๋ค.
์ด๋ ๊ฒ ๋์ค๋ฉด firebase realtime database๊ฐ ์์ฑ
ํ๋ก์ ํธ ์ค์ ์ผ๋ก ์ด๋ํ๊ณ ๋ฐ์ผ๋ก ๋ด๋ ค๋ณธ๋ค.
๋ด ์ฑ์ ์์ฑํ ์ ์๋ ๊ณณ์ด ๋์ค๋๋ฐ ์ฌ๊ธฐ์ ์ธ๋ฒ์งธ </>
๋ชจ์์ ๋ฒํผ์ ํด๋ฆญํ๋ค.
์ญ์๋ ์ฑ์ด๋ฆ์ ์๋ฌด๊ฑฐ๋ ์ ๋ ฅํ๊ณ ์์ฑ์ ๋๋ฌ์ฃผ๋ฉด ๋ค์๊ณผ ๊ฐ์ด sdk๊ฐ ๋ฐ๊ธ๋๋ค.
์ด ์ฝ๋๋ ์ผ๋จ ๋ฉ๋ชจ์ฅ์ ๋ณต์ฌํด๋์.
๋ด ์ฝ๋๋ฅผ ํ๋ฒ ๋ณด์. html์์๋ css๋ ์ ํ์๊ณ js๋ก firebase๋ง ์ฐ๋ํด์ ๋ฐ์ดํฐ ํ๋๋ฅผ ์ ๋ก๋ํ๋ ์ฝ๋์ด๋ค.
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<!--
๋ด๊ฐ ์ฐ๊ณ ์ถ์ html ์์ฑ
~~~
~~~
~~~
-->
<script src="https://www.gstatic.com/firebasejs/8.8.1/firebase-app.js"></script>
<script src="https://www.gstatic.com/firebasejs/8.8.1/firebase-database.js"></script>
<script src="https://www.gstatic.com/firebasejs/8.8.1/firebase-analytics.js"></script>
<script src="https://www.gstatic.com/firebasejs/8.8.1/firebase-auth.js"></script>
<script src="https://www.gstatic.com/firebasejs/8.8.1/firebase-firestore.js"></script>
<script>
var firebaseConfig = {
apiKey: "AIzaSyAIIZGCkttphgrE8yctlzZVTC5PSNAYlNw",
authDomain: "anything-62931.firebaseapp.com",
databaseURL: "https://anything-62931-default-rtdb.firebaseio.com",
projectId: "anything-62931",
storageBucket: "anything-62931.appspot.com",
messagingSenderId: "617249461085",
appId: "1:617249461085:web:db5612fe54b87eb42eceb4"
};
firebase.initializeApp(firebaseConfig);
var database = firebase.database();
function writeUserData(value) {
firebase.database().ref('users/').set(value);
}
writeUserData("Hello~~")
</script>
</body>
</html>
<script src="https://www.gstatic.com/firebasejs/8.8.1/firebase-analytics.js"></script>
์ด๋ ๊ฒ ์๊ธด ๋ถ๋ถ๋ค์ firebase CDN์ด๋ผ์ ์ด๊ฑธ ๋ฃ์ด์ค์ผ๋ง firebase๋ฅผ javascript์์ ์ฌ์ฉํ ์ ์๋ค.
CDN ๋ณต์ฌ๊ฐ ๋๋๋ฉด var firebaseConfig
์ด ๋ถ๋ถ์ ์๊น ๋ณต์ฌํด๋ SDK์ฝ๋๋ฅผ ๋ฃ์ด์ฃผ๋ฉด ๋๋ค.
firebase.initializeApp(firebaseConfig);
์ด ์ฝ๋๋ ์ ํํ ์๋ฏธ๋ ๋ชจ๋ฅด์ง๋ง firebase๋ก ์ฝ๋๋ฅผ ์ง๊ธฐ ์์ํ ๋ ์ ์ธํด์ค์ผ ํ๋ค.
function writeUserData(value) {
firebase.database().ref('users/').set(value);
}
๋ง์ง๋ง์ผ๋ก ์ด ํจ์๋ ๋ด๊ฐ ๋ง๋ ํ๋ก์ ํธ์ user๋ผ๋ ๋ฌธ์๋ฅผ ์ฐธ์กฐํด์์ ๊ทธ๊ณณ์ value๋ฅผ ์ง์ด๋ฃ๊ฒ ๋ค๋ผ๋ ํจ์์ด๋ค.
๋ฐ๋ผ์ writeUserData("Hello~~")
์ด ์ฝ๋๊ฐ ๋์๋๋ฉด ์๊น ๋ง๋ firebase realtime database์ user๋ผ๋ ๋ฌธ์๊ฐ ์๊ธฐ๊ณ hello~~ ๋ผ๋ ๊ฐ์ด ๋ค์ด๊ฐ ์์ ๊ฒ์ด๋ค.
์ด์ธ์ ๊ฐ์ ๊ฐ์ ธ์ค๊ฑฐ๋, ์ฐ๊ฑฐ๋, ์ด๋ฒคํธ๊ฐ ์๊ฒผ์ ๋๋ง ๊ฐ์ ๊ฐ์ ธ์ค๋ ๋ฐฉ๋ฒ ๋ฑ์ ์ฌ๊ธฐ์ ์ฐธ๊ณ ํ๋ฉด ๋๋ค.
ํ์ผ๋ก ์ ์ฌ์ดํธ ์์ ๋ ์ ๋ง๋ก ์๊ธฐ๋ค์ด ๋ง๋ค์ด๋์ ์ด๋ค ํ๋ก์ ํธ์ ์ฝ๋๋ฅผ ๋ณต๋ถํด์จ ๊ฒ์ผ๋ก ๋ณด์ธ๋ค. ์ค์ ๋ก๋ ์๋ ์ฆ, ์๊ธฐ๋ค์ด ๋ง๋ค์ด๋์ ํจ์๊น์ง ๋ณต์ฌํด์จ ์ฝ๋์ด๊ธฐ ๋๋ฌธ์ ๋ฌด์ํด์ผ ํ ๋ถ๋ถ์ ์ ์์ธกํด์ผ์ง๋ง ํ์ฉํ ์ ์๋ค.
์ด ๋ถ๋ถ๋๋ฌธ์ ์์๋ฅผ ๋ฐ๋ก ์ ์ฉํด๋ณด์ง ๋ชปํด์ ํ์์ด ์ ๋ฅผ ์ข ๋จน์๋ค.
์๋ฅผ ๋ค์ด ์ ๋งํฌ์ ์์์ ๋์ค๋ realtiem DB ์ด๋ฒคํธ ๋ฆฌ์ค๋ ํจ์
๋ ๋ค์๊ณผ ๊ฐ๋ค.
var starCountRef = firebase.database().ref('posts/' + postId + '/starCount');
starCountRef.on('value', (snapshot) => {
const data = snapshot.val();
updateStarCount(postElement, data);
});
๊ทผ๋ฐ ์ค์ ๋ก ์ด๋ฒคํธ ๋ฆฌ์ค๋๋ฅผ ํ๊ธฐ ์ํด์๋ ์๋์ ์ฝ๋๋ฅผ ์ฌ์ฉํด์ผํ๋ค. ์๋ํ๋ฉด postID
๋ ๋ด๊ฐ ์ ์ธํ ์ ๋ ์๊ณ updateStarCount(postElement, data);
์ด๊ฒ๋ ์ ์ธํ ์ ์ด ์๋ค.
์์๋ฅผ ์ด๋ฐ ์์ผ๋ก ์ ์ด๋ ผ๊ฑด ๋๋ฌด ์ฑ์์์ด์ ์ด ๋ถ๋ถ์์ ๋ง์ด ์ค๋ง์ค๋ฌ์ ๋ค.
var eventListner = firebase.database().ref('posts/');
eventListner.on('value', (snapshot) => {
const data = snapshot.val();
console.log(data)
});
startCountRef
๋ผ๋ ์ด๋ฆ๋ ์๊ธฐ๋ค์ด ํ๋ก์ ํธ๋ฅผ ๋ง๋ค๋ฉด์ ์ ์ ํ name์ ๋ฃ์ ๊ฑฐ ๊ฐ์๋ฐ, ์์ ๋ก ๋ณด์ฌ์ค ๊ฑฐ๋ฉด ์ฐจ๋ผ๋ฆฌ eventListner
๋ผ๊ณ ์ฐ๋๊ฒ ๋ ์ ์ ํ ์ด๋ฆ์ธ ๊ฑฐ ๊ฐ์์ ์ด๊ฒ๋ ๋ฐ๊ฟจ๋ค.
firebase์ post๋ผ๋ ๋ฌธ์๋ฅผ ์ฐธ์กฐํ๋ ๊ฐ์ฒด์ onํจ์๋ฅผ ์ฌ์ฉํด์ value์ ๋ณํ๊ฐ ์๊ฒผ์ ๋๋ฅผ ์บ์นํ๋ผ๋ ์๋ฏธ์์ 'value'
๋ฅผ ์ธ์๋ก ์คฌ๊ณ , ๋ณํ๋ snapshot์ผ๋ก ์บ์น๋ฅผ ํ๊ธฐ ๋๋ฌธ์ ๋ณํ์ ๊ฐ์ snapshot.val()
๋ก ์ป์ ์ ์๊ฒ ๋๋ค.
์ข์ ๊ธ ๊ฐ์ฌํฉ๋๋ค!