【发布时间】:2020-12-22 01:42:30
【问题描述】:
我正在使用 Flutter 和 Firebase 开发一个应用程序,我必须解决一个听起来像这样的问题:
- 每个用户(在任何时候)都可以将自己放入等待名单
- Firebase 必须通过创建(随机)用户对来处理等待名单
我的想法是在 Cloud Firestore 中为等待列表创建一个集合,其中每个用户都是一个文档和一个 云函数,它通过搜索其他用户(文档) 在集合中删除两个文档(即从等待列表中删除用户)并在另一个集合中创建另一个文档来表示该对。 主要问题是设计(如果可能)一个事务,以保证同一云功能的两个或多个执行不重叠。 有什么建议吗?或者有什么其他方法可以解决这个问题? 谢谢!
【问题讨论】:
-
您的意思是,候补名单中有一个人,或者其他人“随机”与该人配对?或者等候名单中必须有最少人数?我认为您不需要使用云功能来做到这一点
-
只要等候名单中有(至少)2 人,我就可以将他们配对。你如何建议这样做?用户只将自己放在列表中。用户配对过程必须自动化。
-
当有人选择将自己放在列表中时,我会说代码,“如果此集合(等待列表)中的文档存在,则将其删除并在此其他集合中创建另一个文档(配对);否则,在等待列表中创建一个文档”。
-
你可以在用户上有一个字段,'paired: true/false' 并在查询中添加一个条件,比如 waiting-list-collection.where(paired, isEqualTo: false).get( ),而不是删除文档,您可以在进行“配对”时首先更新该字段
-
是的,我也通过了这个。这样做我应该如何执行查询?我想在交易里面。而且......如果事务失败(例如,因为所选文档是与另一个事务配对的目标)Firebase 如何处理这种情况?
标签: firebase function flutter google-cloud-firestore cloud