๐Ÿ‘จโ€๐Ÿ’ป Seungineer's GitHub Contribution

๐Ÿงญ KAIST JUNGLE

[๐Ÿงญ๏ธJungle] jQuery, Ajax, mongoDB - TIL

seungineer = seungwoo + engineer 2024. 1. 11. 22:18

jQuery

์š”์•ฝ:

jQuery๋Š” ์ฝ˜์†”์ฐฝ์—์„œ ํŠน์ • id๋ฅผ ๊ฐ–๋Š” ์š”์†Œ์— ๋ช…๋ น์„ ๋˜์ง€๋Š” ๊ฒƒ์ด๋‹ค. Input Box์˜ ๊ฐ’์„ ๊ฐ€์ ธ์˜ค๊ฑฐ๋‚˜ ์ˆ˜์ •ํ•  ์ˆ˜ ์žˆ๊ณ , <div>์„ ๋ณด์ด๊ฑฐ๋‚˜ ์ˆจ๊ธฐ๊ฑฐ๋‚˜ ํ•  ์ˆ˜ ์žˆ๋‹ค. ๋”๋ถˆ์–ด CSS์˜ ์†์„ฑ๊ฐ’๋„ ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์žˆ๋‹ค.

์ €์ž‘๊ถŒ ๋ฌธ์ œ๊ฐ€ ์žˆ์„ ์ˆ˜ ์žˆ๊ธฐ์— Blur ์ฒ˜๋ฆฌํ•˜์—ฌ ์—…๋กœ๋“œ ํ•จ

์—ญ์‹œ ๋ฌธ์ œ๋ฅผ ํ’€๋ฉด์„œ ์‹ค์ œ๋กœ ๋‚ด๊ฐ€ ์•„๋Š”์ง€ ๋ชจ๋ฅด๋Š”์ง€ ํ™•์ธํ•˜๋Š” ๊ฒŒ ๊ฐ€์žฅ ์ •ํ™•ํ•˜๋‹ค. ๋ฌธ์ œ๋ฅผ ํ’€๋ฉด์„œ jQuery, JS์— ๋Œ€ํ•ด์„œ ๋” ์™€๋‹ฟ๊ฒŒ ๋˜์—ˆ๋‹ค.

CSS ๋ฌธ๋ฒ• ํ˜•์‹๊ณผ JQ, JS๋Š” ์“ฐ์ž„์ด ๋‹ค๋ฅด๊ธฐ์— ๋ฌธ๋ฒ•์ด ๋‹ค๋ฅด๊ณ (๋‹น์—ฐํ•˜์ง€๋งŒ, ์œ ์‚ฌํ•œ ๊ธฐ๋Šฅ(display ๋“ฑ)์„ ํ•˜๋Š” ๋ถ€๋ถ„์ด ์žˆ์–ด์„œ ํ—ท๊ฐˆ๋ ธ๋‹ค) CSS๋กœ ์„ค์ •์„ ํ•ด์ค˜์•ผ ํ• ์ง€, JQ, JS๋กœ ์กฐ์ž‘์„ ํ•ด์•ผ ํ• ์ง€ ๋จผ์ € ์ƒ๊ฐํ•ด ๋ณด๊ณ  ์ฝ”๋”ฉํ•˜๋Š” ๊ฒƒ์ด ์ข‹๊ฒ ๋‹ค.

 

์˜ˆ์‹œ

- ํ•œ Div ํƒœ๊ทธ๋ฅผ ์ฒ˜์Œ ํŽ˜์ด์ง€ loading ์‹œ ํŠน์ • ์ƒํƒœ๋กœ ์œ ์ง€ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•  ๋•Œ

#post-box {
	display: block;
 }

- Div ํƒœ๊ทธ์˜ 'display' ์ƒํƒœ๋ฅผ ์•Œ๊ณ  ์‹ถ์„ ๋•Œ

let status = $('#post-box').css('display') // block or none ์œผ๋กœ ๋ฐ˜ํ™˜
์œ„ ์ฒ˜๋Ÿผ ์œ ์‚ฌ ๊ธฐ๋Šฅ์ด๋”๋ผ๋„ ์กฐ์ž‘ํ•ด์ค˜์•ผ ํ•˜๋Š” ๋ถ€๋ถ„(CSS, JQ, JS)์ด ๋‹ค๋ฅด๊ธฐ์— ์œ ๋…ํ•  ํ•„์š”๊ฐ€ ์žˆ๋‹ค. 

 

Ajax

- ์‚ฌ์šฉ ์œ„์น˜: HTML <script> ... </script>

- ๊ธฐ๋ณธ ๊ณจ๊ฒฉ ๊ตฌ์กฐ:

$.ajax({
  type: "GET",
  url: "์—ฌ๊ธฐ์—URL์„์ž…๋ ฅ", 
  data: {},
  success: function(response){
    console.log(response)
  }
})

์œ„ ๊ตฌ์กฐ์—์„œ 'response'๋Š” dictionary ํ˜•ํƒœ๋กœ ๋ฐ˜ํ™˜๋ฐ›๊ฒŒ ๋œ๋‹ค. ํ†ต์ƒ dic, list ํ˜ผํ•ฉ ๊ตฌ์กฐ์ผ ๊ฒƒ์œผ๋กœ ์ƒ๊ฐ๋จ.

์ด๋ฅผ ์ ์ ˆํžˆ ์กฐ์ž‘ํ•˜์—ฌ ์›ํ•˜๋Š” ์ •๋ณด๋ฅผ ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์žˆ๋‹ค.

 

์˜ˆ์‹œ

function q1() {
            $.ajax({
                type: "GET",
                url: "http://openapi.seoul.go.kr:8088/6d4d776b466c656533356a4b4b5872/json/RealtimeCityAir/1/99",
                data: {},
                success: function(response){
                  $('#names-q1').empty()
                  dic = response["RealtimeCityAir"]["row"]
                  for (i = 0; i < dic.length ; i++) {
                    gu_name = dic[i]["MSRSTE_NM"]
                    dust = dic[i]["IDEX_MVL"]
                    if (dust >= 120) {
                        dust_check = "dust_over";
                    }
                    else {
                        dust_check = "dust_lower";
                    }
                     
                    temp_html = `<li >${gu_name}: <span class = ${dust_check}>${dust}</span></li>`
                    $('#names-q1').append(temp_html)
                  }
                }
              })
        }

 for ๋ฌธ์„ ํ†ตํ•ด์„œ <ul>....</ul> ํƒœ๊ทธ์— ๋ชจ๋“  ์ •๋ณด๋ฅผ ์ž…๋ ฅํ•ด ์ฃผ๋Š” ์กฐ์ž‘

์œ„ ์กฐ์ž‘์„ ํ†ตํ•ด์„œ response์— ์žˆ๋Š” ํ•„์š”ํ•œ ์ •๋ณด๋งŒ์„ ๊ฐ€์ ธ์˜ค๊ฒŒ ๋œ๋‹ค.

 

temp_html์˜ ์กฐ์ž‘ ์˜ˆ์‹œ

temp_html ์กฐ์ž‘์„ ํ†ตํ•ด ๋ธŒ๋ผ์šฐ์ €์—์„œ ๋„์–ด์ฃผ๋Š” style ์กฐ์ž‘์„ ๋ฐ”๊ฟ”์ค„ ์ˆ˜๋„ ์žˆ๋‹ค. ํŠน์ • ์กฐ๊ฑด(๋ฏธ์„ธ๋จผ์ง€ ์ˆ˜์น˜ 120 ์ด์ƒ)์— ๋”ฐ๋ผ class๋ฅผ ๋‹ค๋ฅด๊ฒŒ ๋ฐ›๊ณ , <style>...</style>์—์„œ ๊ฐ class์— ๋”ฐ๋ฅธ style์„ ์ง€์ •ํ•˜๋Š” ๋ฐฉ์‹์ด๋‹ค.

//case1
function q1() {
            $.ajax({
                type: "GET",
                url: "http://openapi.seoul.go.kr:8088/6d4d776b466c656533356a4b4b5872/json/RealtimeCityAir/1/99",
                data: {},
                success: function(response){
                  $('#names-q1').empty()
                  dic = response["RealtimeCityAir"]["row"]
                  for (i = 0; i < dic.length ; i++) {
                    gu_name = dic[i]["MSRSTE_NM"]
                    dust = dic[i]["IDEX_MVL"]
                    if (dust >= 120) {
                        dust_check = "dust_over";
                    }
                    else {
                        dust_check = "dust_lower";
                    }
                     
                    temp_html = `<li class = ${dust_check} >${gu_name}: <span >${dust}</span></li>`
                    $('#names-q1').append(temp_html)
                  }
                }
              })
        }
//case2
function q1() {
            $.ajax({
                type: "GET",
                url: "http://openapi.seoul.go.kr:8088/6d4d776b466c656533356a4b4b5872/json/RealtimeCityAir/1/99",
                data: {},
                success: function(response){
                  $('#names-q1').empty()
                  dic = response["RealtimeCityAir"]["row"]
                  for (i = 0; i < dic.length ; i++) {
                    gu_name = dic[i]["MSRSTE_NM"]
                    dust = dic[i]["IDEX_MVL"]
                    if (dust >= 120) {
                        dust_check = "dust_over";
                    }
                    else {
                        dust_check = "dust_lower";
                    }
                     
                    temp_html = `<li >${gu_name}: <span class = ${dust_check}>${dust}</span></li>`
                    $('#names-q1').append(temp_html)
                  }
                }
              })
        }

 

(์™ผ) Case1, (์˜ค) Case2 html ๊ฒฐ๊ณผ

 

Ajax, jQuery ์ฐจ์ด์— ๋Œ€ํ•ด์„œ
Ajax๋Š” ๋น„๋™๊ธฐ ๋ฐฉ์‹์œผ๋กœ HTML ์žฌ๋กœ๋”ฉ ์—†์ด ์„œ๋ฒ„์—์„œ API๋ฅผ ํ†ตํ•ด ๋ฐ์ดํ„ฐ๋ฅผ JSONํ˜•์‹์œผ๋กœ ๊ฐ€์ ธ์˜ค๋Š” ๊ฒƒ.
jQuery๋Š” HTML ์กฐ์ž‘์„ ์šฉ์ดํ•˜๊ฒŒ ํ•ด์ฃผ๋Š” ๊ฒƒ.

 

MongoDB

MongoDB๋Š” NoSQL ํƒ€์ž…์˜ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ํ”„๋กœ๊ทธ๋žจ์ด๋ฉฐ, JSON๊ณผ ์œ ์‚ฌํ•œ ํ˜•ํƒœ๋กœ DB์— ์ •๋ฆฌํ•œ๋‹ค. DB Tree ๊ตฌ์กฐ๋Š” db > ์ปฌ๋ ‰์…˜ > ๋„ํ๋จผํŠธ ์ด๋‹ค.

๋„ํ๋จผํŠธ์—๋Š” JSON๊ณผ ์œ ์‚ฌํ•œ ํ˜•์‹์œผ๋กœ Key, Value๊ฐ€ ๋‚˜๋‰˜์–ด์„œ ๊ตฌ์„ฑ๋œ๋‹ค.

doc = {
    'name':'์˜์ˆ˜',
    'age':24
}

 

์ปฌ๋ ‰์…˜์€ ์ด์™€ ๊ฐ™์€ ๋„ํ๋จผํŠธ๊ฐ€ ํ•œ ๊ฐœ ์ด์ƒ ํ•ฉ์ณ์ ธ์„œ ๊ตฌ์„ฑ๋œ๋‹ค.

# 'users'๋ผ๋Š” collection์— {'name':'bobby','age':21}๋ฅผ ๋„ฃ์Šต๋‹ˆ๋‹ค.
db.users.insert_one({'name':'์˜ํฌ','age':30})
db.users.insert_one({'name':'์ฒ ์ˆ˜','age':20})
db.users.insert_one({'name':'john','age':30})

 

๋ฐ์ดํ„ฐ๋ฅผ ๋ณผ ๋•Œ๋Š” ์•„๋ž˜์™€ ๊ฐ™์ด ๋ณผ ์ˆ˜ ์žˆ๋‹ค.

all_users = list(db.users.find({},{'_id':False}))

print(all_users[0])         # 0๋ฒˆ์งธ ๊ฒฐ๊ณผ๊ฐ’์„ ๋ณด๊ธฐ
print(all_users[0]['name']) # 0๋ฒˆ์งธ ๊ฒฐ๊ณผ๊ฐ’์˜ 'name'์„ ๋ณด๊ธฐ

for a in all_users:      # ๋ฐ˜๋ณต๋ฌธ์„ ๋Œ๋ฉฐ ๋ชจ๋“  ๊ฒฐ๊ณผ๊ฐ’์„ ๋ณด๊ธฐ
    print(a)