๐Ÿ‘ฆ ๋‚ด์ผ๋ฐฐ์›€์บ ํ”„/TIL(Today I Learned)

TIL_220506_ํŒ€ ํ”„๋กœ์ ํŠธ

  • -

API

#
# ์ข‹์•„์š” POST
#
@app.route('/api/like', methods=['POST'])
def new_post_like():
    like_receive = request.form['like_give']
    post_id_receive = request.form['post_id_give']
    print(post_id_receive, like_receive)

    # ์ €์žฅํ•˜๊ณ 
    doc = {
        'likes': like_receive,
        'post_id' : post_id_receive
    }
    db.likes.insert_one(doc)

    return jsonify({'msg': 'like +1'})


@app.route('/api/like', methods=['POST'])
def update_post_like():
    post_id_receive = request.form['post_id_give']
    # ์ถ”๊ฐ€๋กœ find_one์€ ํ•˜๋‚˜์˜ ์ž๋ฃŒ๋งŒ ์ฐพ์œผ๋ฉด ๋˜๋‹ˆ list๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š”๋‹ค.
    target_like = db.post.find_one({'_id': post_id_receive})
    # print("target : " + target_star)
    # like ๊ฐ’ ๊ฐ€์ ธ์˜ด
    cur_like = target_like['post_like']

    #์ƒˆ๋กœ์šด like ๊ฐ’ ๊ฐฑ์‹ ์„ ์œ„ํ•ด ์ž„์‹œ ์ €์žฅ ๋ณ€์ˆ˜
    new_like = cur_like + 1
    print(post_id_receive)
    print(target_like)
    print(new_like)
    #๊ฐฑ์‹  , (์กฐ๊ฑด, set+๋ฐ”๊ฟ€๊ฐ’)
    db.post.update_one({'post_id': post_id_receive}, {'$set': {'likes': new_like}})

    return jsonify({'msg': 'like +1'})


#
# ์ข‹์•„์š” GET
#
@app.route('/api/like', methods=["GET"])
def post_like():
    like_list = list(db.likes.find({}, {'_id': False}).sort('likes', -1))

    return jsonify({'likes': like_list})

 

JQuery : Ajax

$(window).ready(function () {
    // 500s ์‹œ๊ฐ„ ์ง€์—ฐ
    setTimeout(function(){ show_like(); }, 500);
});

// ์ข‹์•„์š” ๊ธฐ๋Šฅ POST
function add_like(post_id) {
    let like = $(`#${post_id}`).val()
    $.ajax({
        type: "POST",
        url: "/api/like",
        data: {like_give: like, post_id_give: post_id},
        success: function (response) {
            console.log(response)

            alert(response['msg']);

            window.location.reload()
        }
    });
}

// ์ข‹์•„์š” ๊ธฐ๋Šฅ GET
function show_like() {
    $.ajax({
        type: "GET",
        url: "/api/like",
        data: {},
        success: function (response) {
            console.log(response['likes'])
            let rows = response['likes']

            for (let i = 0; i < rows.length; i++) {
                let like = rows[i]['likes']
                let post_id = rows[i]['post_id']

                console.log(like, post_id)

                // $(`.${post_id}`).show(temp_html)
            }
        }
    });
}

 

JQuery : Ajax (ํ‘œ์‹œ๋ถ€๋ถ„)

/* GET ์š”์ฒญ ajax ์ฝ”๋“œ */
function post_listing() {
    $.ajax({
        type: "GET",
        url: "/listing",
        data: {},
        success: function (response) {
            let posts = JSON.parse(response['posts'])

            for (let i = 0; i < posts.length; i++) {
                console.log(posts)
                let post_id = posts[i]['_id']['$oid']
                let post_hashtag = posts[i]['post_hashtag']
                let post_comment = posts[i]['post_comments']
                let post_like = posts[i]['post_like']
                let post_pic = posts[i]['post_pic']

                let temp_html =`
                
                <!--์ข‹์•„์š” ๋ฒ„ํŠผ-->
                <button
                class="like-btn"
                onclick=add_like('${post_id}')>
                <span
                class="material-icons-outlined">
                favorite_border
                </span>
                </button>
                
                <!--์ข‹์•„์š” ํ‘œ์‹œ-->
                <div >์ข‹์•„์š” ${post_like}๊ฐœ</div>
                `

 

์˜ค๋ฅ˜

- ์ข‹์•„์š” ํ‘œ์‹œ DB ๋ฅผ ์ฐพ์ง€ ๋ชปํ•จ

- DB ์— ์ •์ƒ์ ์ธ ์ˆ˜์น˜๊ฐ€ ์ €์žฅ๋˜์ง€ ์•Š์Œ

- DB ์—์„œ post_id ์— ํ•ด๋‹นํ•˜๋Š” likes ์ˆ˜๊ฐ€ ๋Š˜์–ด๋‚˜์ง€ ์•Š๊ณ , ํ–‰์ด ์ถ”๊ฐ€๋จ

 

ํ•ด๊ฒฐ ๋ฐฉ์•ˆ(์ƒ๊ฐ)

- ์ผ๋‹จ DB ์— ์ €์žฅํ•˜๋Š” API ๋ถ€๋ถ„์— ํŠน์ˆ˜ ์กฐ๊ฑด์„ ๊ฑธ์–ด DB ๊ฐ’์„ +1 ์”ฉ ์ถ”๊ฐ€ ๊ธฐ๋Šฅ ์ ์šฉ ์‹œ๋„

- ๊ฒŒ์‹œ๊ธ€์— post_id ๊ฐ’์— ํ•ด๋‹นํ•˜๋Š” likes ๊ฐ’์„ ํ‘œ์‹œํ•  ์ˆ˜ ์žˆ๋„๋ก ๊ตฌํ˜„ํ•˜๊ณ ์ž ํ•จ.

- but ์ œ๋Œ€๋กœ ๋œ ์ˆ˜์น˜๊ฐ€ ์ ์šฉ๋˜์ง€ ์•Š์•„ undefind ๋กœ ํ‘œ์‹œ

Contents

ํฌ์ŠคํŒ… ์ฃผ์†Œ๋ฅผ ๋ณต์‚ฌํ–ˆ์Šต๋‹ˆ๋‹ค

์ด ๊ธ€์ด ๋„์›€์ด ๋˜์—ˆ๋‹ค๋ฉด ๊ณต๊ฐ ๋ถ€ํƒ๋“œ๋ฆฝ๋‹ˆ๋‹ค.