In the code/example below, how can I access the likecount variable that's defined inside the db.collection()...then() method? I feel like I've tried every solution on the internet, but I've always gotten undefined as the result.
Code:
var parsed = path.split("/");
var likecount;
db.collection(parsed[0]).doc(parsed[1]).collection(parsed[2]).doc(parsed[3]).collection("likes").get().then(function(querySnapshot) {
likecount = querySnapshot.size
console.log(likecount)
})
The whole code (included where I try to access likecount
):
firebase.auth().onAuthStateChanged(function(user) {
var query = db.collectionGroup("userPosts")
query.get().then(querySnapshot => {
setupPosts(querySnapshot.docs)
})
const posts = document.querySelector('.posts');
const setupPosts = (data) => {
let html = '';
data.forEach(doc => {
const post = doc.data();
const picURL = post.picURL;
var path = doc.ref.path;
var parsed = path.split("/");
var likecount;
db.collection(parsed[0]).doc(parsed[1]).collection(parsed[2]).doc(parsed[3]).collection("likes").get().then(function(querySnapshot) {
likecount = querySnapshot.size
console.log(likecount)
})
let li = `<li class="post">
<h3 class="content">${post.content}</h3>
<button class="comment" onclick="comment('${path}')">Comment</button>
<button class="like" onclick="like('${path}')">Like</button>
<span class="like-count">${likecount}</span>`;
li += (post.picURL ? `<img class="img" src="${picURL}" onclick="openImage('${picURL}')">` : ``);
li += `</li><br></br>`;
html += li
})
posts.innerHTML = html;
}