【发布时间】:2022-01-04 14:40:54
【问题描述】:
我有一个 Firebase 文档“优惠券”,里面有 2 个字段:一个字符串数组和一个整数,如下所示
目前,如果用户单击按钮获取优惠券,它将删除 Firebase 中的 0 索引并将删除的数组显示为文本小部件中的优惠券代码,但如果两个或更多用户同时单击该按钮时间他们都从数组中得到相同的字符串。
这是我当前点击代码上的按钮:
try {
await FirebaseFirestore.instance
.runTransaction((transaction) async {
DocumentReference
couponCollectionReference =
FirebaseFirestore.instance
.collection('coupons')
.doc(widget.couponNumber);
DocumentReference userCollectionReference =
FirebaseFirestore.instance
.collection('users')
.doc(getUserID());
setState(() {
couponTitle = couponCode[0];
couponBlur = 0.0;
isButtonWorking = false;
});
transaction
.update(couponCollectionReference, {
'coupon_code': FieldValue.arrayRemove(
[couponCode[0]]),
});
transaction
.update(couponCollectionReference, {
'coupons_available':
FieldValue.increment(-1),
});
transaction
.update(userCollectionReference, {
'current_points':
FieldValue.increment(-100),
});
await screenshotController
.capture(
pixelRatio: 2,
delay: Duration(milliseconds: 20))
.then((capturedImage) async {
ShowCapturedWidget(
context, capturedImage!);
}).catchError((onError) {
print(onError);
});
});
} catch (e)
交易是要走的路,我只是没有正确实施它们还是我使用了完全错误的方法?
【问题讨论】:
标签: firebase flutter google-cloud-firestore