javascript - 如何在 Firebase Firestore 的文档中检索和存储 doc.id?
问题描述
我想将这两个 doc.id 都存储在下面的文档位置,以便以后可以重用它们来访问文档。我怎样才能找到它们中的每一个并将它们存储到一个变量中?
例如:我必须在代码中稍后的函数中读取此文档,因此我将存储两个 doc.ids。这是文档路径:db.collection('posts').doc(uid).collection('userPosts').doc(random id generated by Firebase)
. 如何将uid
和“随机 id”存储在两个不同的变量中?
这是读取子集合中的每个文档并将其以 HTML 格式呈现为 li 的代码片段。所以每个 li 都是一个文档,我需要每个 li 的两个 doc.id:
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 => {
var docRefIDpost = docRef.id
const post = doc.data();
const picURL = post.picURL;
let li = `<li class="post">
<div class="title">${post.title}</div>
<div class="content">${post.content}</div>
<button class="comment" onclick="comment('${docRefIDpost}')">Comment</button>
<button class="like" onclick="like('${docRefIDpost}')">Like</button>`;
li += (post.picURL ? `<img class="img" src="${post.picURL}" onclick="openImage('${picURL}')">` : ``);
li += `</li><br></br>`;
html += li
})
posts.innerHTML = html;
}
额外的信息:
这是我运行评论功能后的数据库图片。如您所见,它只是创建一个新文档,而不使用实际存储帖子的现有文档。
这里还有评论功能:
function comment(docRefIDpost) {
var modalcomment = document.getElementById("modal-comment");
modalcomment.style.display = "block";
var submitcomment = document.getElementById("submitcomment");
submitcomment.addEventListener('click', (e) => {
var commentinput = document.getElementById("comment");
console.log(docRefIDpost)
db.collection('posts').doc(docRefIDpost).collection('userPosts').doc(docRefIDpost).collection('comments').add({
comment: commentinput.value,
})
})
}
解决方案
要在您的 HTML 中也拥有 的文档 ID userPosts
,您将从以下位置获取它们doc
:
const setupPosts = (data) => {
let html = '';
data.forEach(doc => {
const docRefIDPost = doc.id;
const post = doc.data();
const picURL = post.picURL;
let li = `<li class="post">
<div class="title">${post.title}</div>
<div class="content">${post.content}</div>
<button class="comment" onclick="comment('${docRefIDpost}')">Comment</button>
<button class="like" onclick="like('${docRefIDpost}')">Like</button>`;
li += (post.picURL ? `<img class="img" src="${post.picURL}" onclick="openImage('${picURL}')">` : ``);
li += `</li><br></br>`;
html += li
})
posts.innerHTML = html;
}
推荐阅读
- docker - 在 kubernetes 集群中部署映像获取 CrashLoopBackOff
- ios - iOS 12 - NSLocale 问题
- amazon-web-services - 我们可以创建一个有权在 AWS 中创建其他 IAM 用户的 IAM 用户吗
- json.net - 为什么 Json.Net 在反序列化第一次时间会导致大量分配
- android - ConstraintLayout by Code - 过早设置约束
- python - 上传到云笔记本(如 colaboratory 或 azure 笔记本)时,jupyter 笔记本图像不显示
- javascript - 在这种情况下该功能的实现是什么
- twitter - 将流式推文存储在列表中以供进一步分析
- javascript - 12小时格式的一天的时刻js间隔
- javascript - 如何使用正则表达式验证我的文件输入名称?