【发布时间】:2020-12-29 03:04:56
【问题描述】:
是否可以只更新 firestore 子集合中的一个文档 ID,我一直在寻找解决方案,但我能找到的只是查询所有文档。如果我使用 querySnapshot.foreach() 子集合中具有相同字段值的所有文档都会更新。使用 .where() 还可以查询所有文档,而不是特定的 id,但我只是想更新一个。我正在尝试使用文档 ID,但我不知道如何调用子集合的 ID。有没有办法做到这一点?
const currentUser=firebase.auth().currentUser;
const userPost= firebase.firestore().collection('users')
.doc(currentUser.uid).collection("post");
const EditPost = async (event) => {
event.preventDefault();
await userPost
.doc() <-- here I've been trying to put the subcollection doc id
.set({
title: title,
body: body,
updatedAt: date,
}, { merge: true })
.catch((err) => {
console.log(err)
})
}
这里是 firestore 子集合结构 的示例屏幕截图。目前我尝试使用 uuidv4,因此我还可以在添加新文档时创建 postId 的字段值,因为我打算只调用 postId 作为文档 ID,但它也在子集合文档中。
【问题讨论】:
-
我不清楚你卡在哪里了。如果您知道它的 ID,那么绝对可以更新单个文档。这在documentation 中有介绍。您必须将 ID 传递给
doc()。 -
是的,我想不出为子集合调用一个文档 ID 的正确方法
-
只有一种方法 - 将 ID 传递给
doc()。你现在什么都没通过。 -
是的,我已经传递了一个 id,我什至使用了 uuidv4 但也不起作用。所以这只是我目前使用的一个例子,我无法找出在子集合中调用 doc() 的 id 的正确方法。我在说的是子集合而不是根集合。我目前正在尝试一些东西,不知道这是否可行。
-
我仍然不清楚你卡在哪里了。您要么知道现有文档的 ID,要么不知道。如果没有,则必须查询才能找到它。
标签: reactjs firebase google-cloud-firestore