【问题标题】:Like button for each post每个帖子的赞按钮
【发布时间】:2021-01-17 14:17:39
【问题描述】:

我想在每个帖子上都有一个赞按钮,我使用 firebase 来存储赞,它存储每个帖子的个人赞,但目前,我只有 1 个存储赞的变量,所以如果一个帖子被赞所有帖子的赞都上升了。我怎样才能发布特定的类似按钮,然后我可以将其发送到 firebase?

这些是按下like按钮到firebase的功能,

var user_key;
var user_keyArr = [];
function like(e){
    document.getElementById('like-post-module').style.display = "block";
    // set user id to the hidden input field
    document.querySelector(".like-postid").value = e.target.getAttribute("userid");
    user_key = e.target.getAttribute("userid");
    user_keyArr.push(user_key);
    document.querySelector(`[userid="${user_key}"]`).innerHTML = `💙`;
    const userRef = dbRef.child('users/' + e.target.getAttribute("userid"));
    // set data to the user field
    const likePostInputsUI = document.querySelectorAll(".like-post-input");
    userRef.on("value", snap => {
        for(var i = 0, len = likePostInputsUI.length; i < len; i++) {
            var key = likePostInputsUI[i].getAttribute("data-key");
                    likePostInputsUI[i].value = "";
        }
    });
    const saveBtn = document.querySelector("#like-post-btn");
    saveBtn.addEventListener("click", saveLikeClicked);         
}

function saveLikeClicked(e) {
    var n_likes = 0;
    usersRef.on("value", snap => {
        snap.forEach(childSnap => {
            if(childSnap.val().post_likes == undefined){
                let key = childSnap.key,
                value = childSnap.val()
                n_likes = n_likes + 1
            } else {
            let key = childSnap.key,
                value = childSnap.val()
                n_likes = value.post_likes + 1
        }
        });
    });
    const userID = document.querySelector(".like-postid").value;
    const userRef = dbRef.child('users/' + userID);
    var likeListObject = {}
    const likeListInputsUI = document.querySelectorAll(".like-post-input");
    likeListInputsUI.forEach(function(textField) {
        let key = textField.getAttribute("data-key");
        let value = likes;
        likeListObject[textField.getAttribute("data-key")] = textField.value
    });
    userRef.update({
        post_likes: n_likes
    });
    document.getElementById('like-post-module').style.display = "none";
    var user_keyArr_likes = JSON.parse(localStorage.getItem("user_keyArr_loc"));
    console.log(user_keyArr_likes)
    for(i=0; i<=user_keyArr.length-1; i++){
        document.querySelector(`[userid="${user_keyArr_likes[i]}"]`).innerHTML = `&#128153;`;
    }
}

它现在进入 firebase 的方式:

请建议我可以更改或添加的内容。

【问题讨论】:

  • 将post id作为参数传递给点击like按钮时调用的函数。

标签: javascript html firebase firebase-realtime-database


【解决方案1】:

因此,代码将 1 加到 value.post_likes 上,这会更新所有喜欢的值,因此只需将特定的键代替即可。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-03-05
    • 2020-04-29
    • 1970-01-01
    • 1970-01-01
    • 2023-02-04
    • 2012-09-04
    • 1970-01-01
    相关资源
    最近更新 更多