如果在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);
}
非常感谢您的一些建议!