- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
嗨,我正在尝试在 Flutter 中使用 Firebase Firestore 实现简单的事务。该过程很简单,只需更新两个文件,如下所示:
DocumentSnapshot productSnapshot = await productReference.get();
DocumentSnapshot userSnapshot = await userReference.get();
DocumentSnapshot userProductSnapshot = await userProductReference.get();
if (productSnapshot.exists &&
userSnapshot.exists &&
userProductSnapshot.exists) {
double price = double.parse(productSnapshot.data["productPrice"].toString());
double money = double.parse(userSnapshot.data["money"].toString());
double afterBuyMoney = money - price;
if (afterBuyMoney >= 0) {
await userReference.updateData({"money": afterBuyMoney});
await userProductReference.updateData(({"isOwned": true}));
response = "success";
}
}
await Firestore.instance.runTransaction((transaction) async {
DocumentSnapshot productSnapshot = await transaction.get(productReference);
DocumentSnapshot userSnapshot = await transaction.get(userReference);
DocumentSnapshot userProductSnapshot = await transaction.get(userProductReference);
if(productSnapshot.exists && userSnapshot.exists && userProductSnapshot.exists) {
double price = double.parse(productSnapshot.data["productPrice"].toString());
double money = double.parse(userSnapshot.data["money"].toString());
double afterBuyMoney = money - price;
if (afterBuyMoney >= 0) {
await transaction.update(userReference, {"money": afterBuyMoney});
await transaction.update(userProductReference,({"isOwned": true}));
response = "success";
}
}
}).then((_) {
print("Success");
}).catchError((error) {
response = error.message;
});
最佳答案
尝试:
Future<bool> insert() async {
String document = "document";
String collection = "collection";
Map map = new Map();
map["last_name"] = "Last Name";
map["first_name"] = "First Name";
map["middle_name"] = "Middle Name";
DocumentReference documentReference = Firestore.instance.collection(collection).document(document);
Firestore.instance.runTransaction((transaction) async {
await transaction
.set(documentReference, {
'last_name': map['last_name'],
'first_name': map['first_name'],
'middle_name': map['middle_name']
})
.catchError((e) {})
.whenComplete(() {});
}).catchError((e) {
return false;
});
return true;
}
关于firebase - 使用 runTransaction 的 Flutter/Firebase Firestore 什么也不做,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55203637/
我正在使用事务在 Firestore 中实现帖子点赞和评论功能。我使用事务是因为我需要在喜欢/评论子集合中添加新字段并更新帖子的计数器,并将帖子 ID 添加到用户喜欢/评论的帖子集合中。 我注意到如果
我遇到了最奇怪的问题。有一天,runTransaction 突然完全停止运行。没有错误。没有消息。我放在那里的任何打印语句都不会运行。没有什么。就好像 runTransaction 语句根本不存在一样
我目前正在编写一个操作,作为其中的一部分,检查并递增 orderID 值并在对话中使用它进行响应。 该代码目前可以运行,但部分执行可能需要长达 10 秒的时间才能执行,这可能会使 action-on-
我收到一个错误,该错误在我的设备屏幕上显示为 NullPointerException(它没有出现在日志中)。 本质上,我是从 .addListenerForSingelValueEvent() 中调
我有两个引用文献要更新: 1. /items/item1/sumlikes: 4 "item1"被 4 个用户喜欢。我需要一个事务,因为多个用户可以同时写入这个值:https://firebase.g
我正在查看这个用于 Flutter (dartlang) 的 Firebase API 的演示程序,并查看了原始来源。我不是在摸索 runTransaction 和 set() 之间的区别,也不是在摸
我正在尝试使用 Firebase 数据库的 runTransaction() 但它不起作用。这是我正在使用的代码。 numQuestionRef.runTransaction(new Transact
我使用 Firebase 实时数据库并希望在事务处理中为我的 vector 添加值,即获取 vector 、更新、设置 vector 。 我写了一些简单的 labda,但一直坚持这些代码无法编译。
我正在尝试使用 Firebase 数据库的 runTransaction() 但它不起作用。这是我正在使用的代码。 numQuestionRef.runTransaction(new Transact
我正在开发一个聊天应用程序,用户应该在其中收到有关来自其联系人的新消息的通知。此通知消息还应包括未读消息的数量。因为发送方和接收方都可以更新此信息 runTransaction 是首选。不幸的是,有时
自从开始使用 DatabaseReference.runTransaction 功能,我有一个问题。 已观看最新Google Developers Flutter promotion video ,我
该函数首先进行 Stripe 调用来向用户收费,然后创建一个交易来更新两个不同的文档 - 相关的付款和用户。我不确定如何优化此代码,因为我需要事务逻辑来更新文档。如何优化这个功能? const fun
嗨,我正在尝试在 Flutter 中使用 Firebase Firestore 实现简单的事务。该过程很简单,只需更新两个文件,如下所示: DocumentSnapshot productSnapsh
当我预计用户会同时写入 Firebase 中的某个位置时,我之前调用了 .runtransaction() 方法 private void increasePollTotalVoteCounter(
我是一名优秀的程序员,十分优秀!