javascript - Firestore - 获取文档后如何获取文档 ID?
问题描述
在我的 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>
);
}
解决方案
您data.docs
是DocumentSnapshot对象的数组。每个都有一个带有文档 ID 的id属性。如果您想将其添加到您的状态,请尝试以下操作:
setApps(data.docs.map(doc => { id: doc.id, ...doc.data()));
这应该在每个映射对象上创建一个属性id
,以及使用 JavaScript 扩展运算符来自其他字段的数据。
推荐阅读
- oracle - 将 OBIEE 11.1.6 升级到 12C
- python - Python - 为什么条件在一个函数中执行但在另一个函数中不执行?
- r - 将箱线图与其他图表类型结合时,在图例中包含箱线图图标和 ggplot
- android-studio - 如何在颤振中使用局部变量值?
- loops - 批量动态分配变量
- html - 为什么“-webkit-text-security: circle;”不 做任何事情?
- python-3.x - 为我想使用 Run Keywords 方法调用的所有关键字获取参数错误
- javascript - Git return "'pull' is not a git command. See 'git --help'" from remote on Windows 10
- vb.net - 按组合框中的值自动填充文本框
- wordpress - 在“编辑帖子”管理页面中显示自定义分类