【发布时间】: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 = `💙`;
}
}
它现在进入 firebase 的方式:
请建议我可以更改或添加的内容。
【问题讨论】:
-
将post id作为参数传递给点击like按钮时调用的函数。
标签: javascript html firebase firebase-realtime-database