Firebase - 如何从引用中获取数据?

3
我有一个Firebase Firestore,其中包含一些引用数据类型。
它看起来像这样:enter image description here enter image description here 我希望这是正确的方法。
现在,当我从Firebase获取用户时,我会得到一个具有其ID的引用对象。但是,如果我调用我的函数来获取文档,则会收到错误消息:
首先是我的函数及其调用方式:
export const getClubById = async (id: string) => {
  const doc = collection(db, 'clubs', id)
  return doc
}

const userData = dbUser.data()
const club = await getClubById(userData.selectedClub.id)
console.log('club', club)

这里是错误信息:

Uncaught (in promise) FirebaseError: Invalid collection reference. Collection references must have an odd number of segments, but clubs/vA7R94pX3bpHDsYIr6Ge has 2.
1个回答

4
如果您已有DocumentReference,则可以使用getDoc()函数从Firestore检索文档,如下所示:
import { getDoc, DocumentReference } from "firebase/firestore";

export const getClubById = async (clubDocRef: DocumentReference) => {
  const clubSnapshot = await getDoc(clubDocRef);
  return clubSnapshot.data();
}

// Pass the reference itself to the function instead of doc ID
const club = await getClubById(userData.selectedClub)

对于问题中的错误,在创建DocumentReference时,如果您有文档ID,则应使用doc()函数而不是用于创建CollectionReferenccecollection()函数,如下所示:
const docRef = doc(db, 'clubs', clubID);

还可以查看:Firestore:Web v9 中添加新数据的模式是什么?


它使用getDoc函数运行成功。谢谢 :) - Jonathan Sigg

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接