我正在为每个用户创建一个文档来存储用户书签的ID。我正在使用addDoc,所以创建的文档的ID是由firebase生成的。我想检查该文档是否存在,以便创建新文档或更新旧文档。我需要有一个文档引用来更新文档,我花了很长时间试图找到一种方法来获得自动生成的ID。我的代码可以工作,但感觉很糟糕--有没有更好的方法来完成这个任务?
//Add a value to the bookmarks array for individual user
export const addBookmarkForUser = async (userAuth, showId) => {
const bookmarkDocRef = collection(db, 'users', userAuth.uid, 'bookmarks')
const bookmarkSnapshot = await getDocs(bookmarkDocRef)
let userBookmarkDocId
if(bookmarkSnapshot){
bookmarkSnapshot.forEach((doc) => {
if(doc.id){
userBookmarkDocId = doc.id
console.log(userBookmarkDocId)
}
})
}
try {
if(!bookmarkSnapshot) {
await addDoc((collection(db, 'users', userAuth.uid, 'bookmarks'), {
favorites: [{showId: showId}],
}))
}else {
const userBookmarkRef = doc(db, 'users', userAuth.uid, 'bookmarks', userBookmarkDocId)
await updateDoc(userBookmarkRef, {
favorites: arrayUnion({showId: showId})
})}
} catch (error) {
console.log('Error creating bookmark', error.message);
}
};
我知道每个用户只有一个文档-是否有更好的方法来查找doc.id?
下面是firestore结构-x1c 0d1x
1条答案
按热度按时间0s7z1bwu1#
如果您只想检查集合中有多少文档,那么您可以使用
getCountFromServer()
来加载计数,而不加载实际的文档数据。但是,由于您需要文档ID及其数据,因此可以运行一个简单的查询: