在我的Firestore数据库中,每个用户都有一个名为Apps的子集合。我想用每个应用程序的ID创建子URL。但是我不知道如何获取我的Apps子集合的文档ID。
也许我必须使用onSnapshot()
方法,但是我不确定如何在我的情况下使用它。
感谢您的帮助。
function AppList() {
const [apps, setApps] = React.useState([]);
React.useEffect(() => {
const fetchData = async () => {
const db = firebase.firestore();
var user = firebase.auth().currentUser;
if (user != null) {
var uid = user.uid;
const data = await db
.collection("Users")
.doc(uid)
.collection("Apps")
.get();
setApps(data.docs.map(doc => doc.data()));
}
};
fetchData();
}, []);
return (
<Row gutter={{ xs: 8, sm: 16, md: 24, lg: 32 }}>
{apps.map(app => (
<Col className="gutter-row" span={100}>
<Card
style={{ width: 300, marginTop: 16 }}
actions={[
<Button type="default" size="middle">
<Link to={}>
<EditOutlined />
<span> Edit the app </span>
</Link>
</Button>
]}
>
<Meta title={app.appName} description={app.description} />
</Card>
</Col>
))}
</Row>
);
}
答案 0 :(得分:1)
您的data.docs
是DocumentSnapshot对象的数组。每个文档都有一个id属性和文档ID。如果要将其添加到您的状态,请尝试以下操作:
setApps(data.docs.map(doc => { id: doc.id, ...doc.data()));
这应该在每个映射对象上创建属性id
,并使用JavaScript传播运算符从其他字段中创建数据。