Firestore / Flutter:如果同时连接达到限制,则阻止更新

时间:2019-07-01 15:43:01

标签: flutter google-cloud-firestore

如果在Flutter应用程序中有以下代码限制了购票,那么如果两个用户同时运行该功能,如何确保用户不会超额预定?目前,如果我设置以下内容:

门票:1

已购买的机票:0

然后同时运行该函数将导致:

已购买的机票:2.

var docRef = Firestore.instance.collection('tickets').document(docID);

try {
  Firestore.instance.runTransaction(
    (transaction) async {
      if (ticketsAvailable >= ticketsPurchased) { // Only run transaction if tickets are still available
        docRef.updateData(
          {'ticketsPurchased': FieldValue.increment(1)},
        );
      Map map = data['customers'] ?? {};
      map.putIfAbsent(user.uid, () => {"name": user.displayName, "date": DateTime.now()},);
        await transaction.update(docRef, <String, dynamic>{'customers': map},);
        } else {
          print("Sold Out!");
        }
      },
     );
  } catch (e) {
    print(e); 
  }

非常感谢您的一些建议!

0 个答案:

没有答案