Firebase - Firestore - 使用collection.add()获取键

9 浏览
0 Comments

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
});

但我希望避免这样做。

0
0 Comments

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/…

0
0 Comments

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,并在需要时使用它进行操作,而不必担心并行请求或数据完整性的问题。

0
0 Comments

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属性来获取新文档的键。这样,我们就可以方便地使用该键执行其他操作。

0