如何使用 Flutter 执行 Firebase 可变事务数据?
Posted
技术标签:
【中文标题】如何使用 Flutter 执行 Firebase 可变事务数据?【英文标题】:How to perform Firebase Mutable Transaction Data with Flutter? 【发布时间】:2018-05-04 07:57:42 【问题描述】:我有 Swift 代码,我在某些条件下减少或增加 int
值。如何用 Flutter 复制它?这是我的 Swift 代码..
// 2. Decrease Value -= from NumberOnes
let decreaseRef = self.ref.child("NumberOnes/\(myfav1)/Value")
decreaseRef.runTransactionBlock (currentData: FIRMutableData) -> FIRTransactionResult in
if var data = currentData.value as? Int
var count = data
count -= 1
data = count
currentData.value = data
return FIRTransactionResult.success(withValue: currentData)
return FIRTransactionResult.success(withValue: currentData)
另外,如果有这方面的文档/教程,请指点我。
* 更新 *
这是我的 Flutter 代码...
fb.child('UserVideo/$userid/Vid1').onValue.listen((Event event)
if (event.snapshot != null)
final vidID = event.snapshot.value["videoID"];
fb.child('NumberOnes/$vidID/Value').onValue.listen((Event newEvent)
int vidValue = newEvent.snapshot.value;
vidValue;
print(vidValue);
//vidValue = value;
final value = vidValue--;
fb.child('NumberOnes/$vidID').update(
'Value': value,
);
);
我的 Flutter 代码的问题在于它不会停止减少。有没有办法解决这个问题?
【问题讨论】:
我对 Swift 不熟悉,不管你能否澄清问题,你是否试图根据代码中的某些条件来增加/减少数据库中的 int 值? 是的。 reduceRef 的值是一个 int 并且我试图向上或向下操纵它。并保存 @aziza 我正在编写一些接近但并没有停止减少的 Flutter 代码。请看一看。 什么时候需要减少,什么时候不需要? @aziza 在上面的例子中,我只是在减少。我将增加我的代码的另一部分。我假设它会以类似的方式工作。 【参考方案1】:这是我的解决方案。我从这里的答案中解决了...Flutter Firebase update will not stop updating node?
基本上,我将值隔离一次,对其进行操作,然后使用新信息更新节点。我认为这比 Firebase Swift SDK 中的 runTransactionBlock 效率低得多,后者将快照值作为 MutableData 带回。如果将来有人找到解决此问题的方法,请添加答案。
if (vidRank == 1)
var event = await fb.child('UserVideo/$userid/Vid1').once();
if (event.snapshot != null)
var vid1id = event.snapshot.value['videoID'].toString();
var onesEvent = await fb.child('NumberOnes/$vid1id').once();
if (onesEvent.snapshot != null)
var onesValue = (onesEvent.snapshot.value['Value'] as int);
final vidValue = onesValue - 1;
print("Inside $vidValue");
fb.child('NumberOnes/$vid1id').update(
'Value': vidValue
);
【讨论】:
DatabaseReference
现在提供runTransaction()
@GünterZöchbauer 你能提供一个可行的例子吗?以上是关于如何使用 Flutter 执行 Firebase 可变事务数据?的主要内容,如果未能解决你的问题,请参考以下文章
Flutter 和 Firebase:任务 ':firebase_auth:compileDebugJavaWithJavac' 执行失败
如何在 Flutter Firebase 应用中搜索并向附近的人发送通知?
如何使用 Firebase 测试 Flutter 应用程序?