代码之家  ›  专栏  ›  技术社区  ›  StuartM

FireBase FireStore易于记忆的参考资料

  •  0
  • StuartM  · 技术社区  · 6 年前

    我们使用FireBase FireStore进行数据存储。当用户创建一个新房间时,我们希望该引用易于记忆,以便用户可以与其他用户共享房间ID/代码。

    目前,Firestore将创建一个唯一的引用,例如: dvftmyed5cwdo5qirazg

    这太长了,很难记住或分享。我们可以手动设置不同的引用,但它们必须是唯一的。另一点是,用户可以创建多个房间,因此每次都必须更改引用。

    有没有一种方法可以为这个用例使用更短/更好的引用?

    1 回复  |  直到 6 年前
        1
  •  1
  •   Frank van Puffelen    6 年前

    FireBase/FireStore没有内置的短引用,因为它们没有足够的熵来保证统计上的唯一性。但由于创建聊天室可能是一个相当小的操作量,您可以通过以下方式在应用程序中实现:

    1. 为每个房间生成自己的令牌,例如计数器。
    2. 在数据库中检查这个房间是否可用。
    3. 如果令牌已被占用,请生成另一个令牌并重试。

    这就是自动增量字段在大多数数据库中的工作原理。在FireStore上,您将创建一个保存当前计数器值的文档:

    chat_rooms (collection)
      COUNTERS: { last_room_id: 2 } (document)
      chatroom_1: { room_id: 1, name: "Chat room for Stuart and Frank" } (document)
      chatroom_2: { room_id: 2, name: "Public chat room" } (document)
    

    现在创建新房间时,您可以:

    1. 启动一个 transaction .
    2. COUNTERS .
    3. 阅读 last_room_id ,并递增。
    4. 写回更新的文档。
    5. 为新聊天室创建新文档。
    6. 提交事务

    注意,有很多方法可以生成代码。上面的计数器方法很简单,但我建议查看更多选项。一些有趣的阅读: