如何使用 Modular Web SDK 版本 9 在 Cloud Firestore 集合中的文档中获取文档和嵌套集合?
How do I get document and nested collection in a document in a Cloud Firestore collection using Version 9 of the Modular Web SDK?
我正在学习使用 Firestore 从集合中检索数据的教程。
有两件主要的事情:检索 DOCUMENT 和嵌套在该 DOCUMENT 中的 COLLECTION。
我下面的代码基于 FireStore web v8,我想将它转换为 web 版本 9。
我发现它很复杂!
useEffect(()=>{
if(roomId){
db.collection('rooms').doc(roomId).onSnapshot(snapshot => {
setRoomName(snapshot.data().name);
});
db.collection('rooms').doc(roomId).collection("messages").orderBy("timestamp","asc").onSnapshot(snapshot => {
setMessages(snapshot.docs.map(doc => doc.data()))
});
}
},[roomId])
试试这个:
import { collection, query, where, doc, onSnapshot } from "firebase/firestore";
useEffect(() => {
onSnapshot(doc(db, "rooms", roomId), (doc) => {
setRoomName(doc.data().name)
});
const q = query(collection(db, "rooms", roomId, "messages"), orderBy("timestamps"));
onSnapshot(q, (querySnapshot) => {
setMessages(querySnapshot.docs.map(doc => doc.data()))
});
}, [roomId])
同时结帐:
这个应该能胜任!
useEffect(() => {
if(roomId){
onSnapshot(doc(db, "rooms", roomId), (document) =>{
setRoomName(document.data().name);
});
const msgColl = query(collection(db, "rooms", roomId, "messages"), orderBy("timestamp"));
onSnapshot(msgColl, (querySnapshot) => {
setMessages(querySnapshot.docs.map(msg => msg.data()))
});
}
}, [roomId])
这仅供其他人使用....
V8:
export const fetchAccountAssets = (userID, accountID) => db()
.collection('Accounts')
.doc(userID)
.collection('Assets')
.get()
.then((querySnapshot) => querySnapshot);
V9:
export const fetchAccountAssets = async (userID, accountID) => {
return await getDocs(collection(db, 'Accounts', userID, 'Assets'));
}
我不认为我需要在这里等待但是哦好吧..
我正在学习使用 Firestore 从集合中检索数据的教程。 有两件主要的事情:检索 DOCUMENT 和嵌套在该 DOCUMENT 中的 COLLECTION。 我下面的代码基于 FireStore web v8,我想将它转换为 web 版本 9。 我发现它很复杂!
useEffect(()=>{
if(roomId){
db.collection('rooms').doc(roomId).onSnapshot(snapshot => {
setRoomName(snapshot.data().name);
});
db.collection('rooms').doc(roomId).collection("messages").orderBy("timestamp","asc").onSnapshot(snapshot => {
setMessages(snapshot.docs.map(doc => doc.data()))
});
}
},[roomId])
试试这个:
import { collection, query, where, doc, onSnapshot } from "firebase/firestore";
useEffect(() => {
onSnapshot(doc(db, "rooms", roomId), (doc) => {
setRoomName(doc.data().name)
});
const q = query(collection(db, "rooms", roomId, "messages"), orderBy("timestamps"));
onSnapshot(q, (querySnapshot) => {
setMessages(querySnapshot.docs.map(doc => doc.data()))
});
}, [roomId])
同时结帐:
这个应该能胜任!
useEffect(() => {
if(roomId){
onSnapshot(doc(db, "rooms", roomId), (document) =>{
setRoomName(document.data().name);
});
const msgColl = query(collection(db, "rooms", roomId, "messages"), orderBy("timestamp"));
onSnapshot(msgColl, (querySnapshot) => {
setMessages(querySnapshot.docs.map(msg => msg.data()))
});
}
}, [roomId])
这仅供其他人使用....
V8:
export const fetchAccountAssets = (userID, accountID) => db()
.collection('Accounts')
.doc(userID)
.collection('Assets')
.get()
.then((querySnapshot) => querySnapshot);
V9:
export const fetchAccountAssets = async (userID, accountID) => {
return await getDocs(collection(db, 'Accounts', userID, 'Assets'));
}
我不认为我需要在这里等待但是哦好吧..