javascript Web版本9 API中的Cloud Firestore子集合语法

vmpqdwk3  于 2023-02-02  发布在  Java
关注(0)|答案(1)|浏览(111)

我正试图使用为Web版本8编写的教程来学习Firestore Cloud 9。我被困在试图重构似乎是某种子集的东西上。
Web 8代码如下所示:

const ref = firestore.collection('users').doc(auth.currentUser.uid).collection('posts');
const query = ref.orderBy('createdAt');
const [querySnapshot] = useCollection(query);

我的(失败的)尝试如下所示:

import { firestore, auth, serverTimestamp } from "@/lib/firebase";
import { collection, getDocs, orderBy, query } from "firebase/firestore";
import { useRouter } from "next/router";
import { useCollection } from "react-firebase-hooks/firestore";

const ref = collection(firestore, 'users');
const q = query(
    ref,
    where('username', '==', auth.currentUser.uid),
    orderBy('createdAt', 'desc')
);
//const newPosts = (await getDocs(q)).docs.map((doc) => doc.data());
const [querySnapshot] = useCollection(q);

我可以毫无问题地得到第一个集合。但是通过doc(ument)获取子集合(?)不是我能理解的事情。我试过getDocs()(上面注解掉了)以及getDoc()&. doc。

68bkxrlz

68bkxrlz1#

v8及之前版本语法中的以下行:

const ref = firestore.collection('users').doc(auth.currentUser.uid).collection('posts');

在v9及更高版本中将如下所示:

const ref = collection(firestore, 'users', auth.currentUser.uid, 'posts');

相关问题