Firebase - Firestore - 使用collection.add()获取键
Firebase - Firestore - 使用collection.add()获取键
我在使用Firebase的新版Firestore时遇到了问题。
情况:我有一个collection('room')
我使用collection('room').add(room)
创建房间。
我想要做的事情:我需要更新一个房间。
为此,我使用:collection('room').doc(ROOM_ID).update(update)
所以我需要在我的集合中的文档中添加ROOM_ID:
|room
ROOM_ID
id:ROOM_ID,
someContent: ForTheQuery
有可能实现这个吗?
另一个选择是使用以下方法创建一个自动生成的ID:
collection('room') .doc(someId) .set({ id: someId, someContent: ForTheQuery });
但我希望避免这样做。
Firebase - Firestore - get key with collection.add()问题的出现原因是,当使用collection.add()方法将数据添加到Firestore集合中时,无法立即获取到新添加数据的键值。
为了解决这个问题,可以使用以下方法:
在AngularFire中,可以使用afs.createId()方法来生成一个唯一的键值,并将其记录在变量idBefore中。
在Android Firestore中,可以使用db.collection("YourCol").document().getId()方法来生成一个唯一的键值,并将其记录在变量idBefore中。
通过这种方式,我们可以在添加数据到Firestore集合之前获取到唯一的键值。
感谢这个帖子提供了正确的解决方法,详细说明了如何在AngularFire中获取键值:github.com/angular/angularfire2/blob/master/docs/firestore/…
Firebase - Firestore - 使用collection.add()方法获取key的问题出现的原因是需要获取文档的唯一ID,并将其用作文档的属性之一。通过使用doc()方法创建文档引用并获取唯一ID,然后使用该ID设置文档的内容。然而,在设置文档时,有一个冗余的操作将ID作为字段添加到文档中。
解决方法是不必将ID作为字段添加到文档中,因为可以直接使用唯一ID。此外,不必担心多个并行请求使用相同的ID,因为Firestore保证在同一集合中生成的ID是独一无二的。
下面是一个示例代码,展示了如何使用collection.add()方法获取key:
const ref = store.collection('users').doc(); console.log(ref.id); // 打印唯一ID ref.set({id: ref.id}) // 使用ID设置文档的内容 .then(() => { // 再次获取文档并显示其数据 ref.get().then(doc => { console.log(doc.data()) // 打印 {id: "唯一ID"} }) });
需要注意的是,将ID作为字段添加到文档中是多余的操作,除非需要在自动反序列化中使用唯一ID。此外,不必担心线程安全性,因为Firestore只有一个连接,并且所有操作都在该连接上进行。关于"integrity"的问题,不太清楚具体指的是什么。
总之,通过使用collection.add()方法获取key,可以方便地获取文档的唯一ID,并在需要时使用它进行操作,而不必担心并行请求或数据完整性的问题。
Firebase是一种用于构建移动和Web应用程序的后端平台,它提供了一系列工具和服务,包括Firestore数据库。Firestore是一种强大的、灵活的NoSQL文档数据库,可以用于存储和同步应用程序的数据。
在使用Firebase的Firestore时,有时我们需要获取添加到集合中的文档的唯一标识符。例如,在通过collection.add()方法将数据添加到集合中时,我们可能想要获取新文档的键。然而,在一些情况下,开发者可能会遇到一个问题,即无法直接从collection.add()方法中获取新文档的键。
解决这个问题的方法是使用Firestore文档的.id属性来获取键。在JavaScript中,可以通过在collection.add()方法前使用async/await关键字来实现这一点。以下是一个使用async/await的示例:
const getKey = async () => { const docRef = await fs.collection("testing").add({ data: 'test' }); const key = docRef.id; return key; }
上面的代码通过await关键字等待将数据添加到集合中,并使用docRef.id属性获取新文档的键。最后,将键返回给调用方。
这样,我们就可以通过调用getKey()方法来获取添加到集合中的新文档的键。这样,我们就可以使用该键执行其他操作,如更新或删除文档。
总结起来,Firebase的Firestore是一种功能强大的NoSQL文档数据库,可以用于存储和同步应用程序的数据。在使用collection.add()方法将数据添加到集合中时,我们可以使用async/await关键字和文档的.id属性来获取新文档的键。这样,我们就可以方便地使用该键执行其他操作。