【问题标题】:Generate a unique firestore field生成一个独特的 firestore 字段
【发布时间】:2021-01-25 21:23:33
【问题描述】:

我正在尝试创建一个系统,让 1 人创建/删除公共房间,而其他人可以加入所述房间。目前它已设置为主机可以生成一个随机房间,该房间作为一个字段放入 Firestore:

{
username: Ghost Nappa
room: 2384
}

我看到的一个问题是它目前是完全随机的,因此有时它可能会尝试使用已经由另一个人生成(并正在使用)的代码创建一个房间。类似这个帖子:How to generate and guarantee unique values in firestore collection? 不同之处在于主机具有唯一代码,而客户端将共享代码(因此它不能是我不认为的唯一文档) 我如何才能在 firestore 中的所有文档中检查一个字段的实例?

【问题讨论】:

标签: android firebase flutter dart google-cloud-firestore


【解决方案1】:

我了解在您的场景中,多个用户可以拥有相同的房间号。 您始终可以通过执行以下查询来检查是否存在具有该编号的房间:

// Generate new room number
let newRoomNumber = generateNewRoomNumber();


const docRef = db.collection('users');
const snapshot = await docRef.where('room', '==', newRoomNumber).get();
if (snapshot.empty) {
  console.log('Creating new room');
  createNewRoom();
  return;
}  

否则,@Frank van Puffelen 分享的 link 显示了解决此问题的各种方法,并且还提供了一些不错的参考

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-07
    • 1970-01-01
    • 2013-05-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多