如何在cloud_firestore_odm中运行事务?

问题描述 投票:0回答:3

我想使用

cloud_firestore_odm
运行事务来更新 Cloud Firestore 中的数据。

这段代码运行良好:

usersRef 
  .doc('foo_id')
  .update(
    name: 'John',
  );

但是这个没有。我做错了,有人能告诉我如何正确做吗?

final transaction = await FirebaseFirestore.instance.runTransaction((_) async => _);

usersRef 
  .doc('foo_id')
  .transactionUpdate(
    transaction,
    name: 'John',
  );
flutter firebase google-cloud-firestore
3个回答
4
投票

由于 ODM 的工作方式,使用 Firestore ODM 使用事务的语法略有不同。

代替:

await FirebaseFirestore.instance.runTransaction((transaction) async {
  transaction.update(usersRef.doc('id'), {'age': 42});  
});

你应该这样做:

await FirebaseFirestore.instance.runTransaction((transaction) async {
  usersRef.doc('id').transactionUpdate(transaction, age: 42);  
});

基本上,

transaction
与“参考”被交换。但好处是,交易对象是完全类型化的。

同样的逻辑适用于任何其他交易方法。


0
投票

试试这个:

await FirebaseFirestore.instance((transaction) async {
   await transaction.update(usersRef.doc('foo_id'),{
     'name' : 'John'
   });
});

0
投票

等待FirebaseFirestore.instance((事务)异步{ 等待 transaction.set(usersRef.doc('foo_id'),{ “姓名”:“约翰” }); });

© www.soinside.com 2019 - 2024. All rights reserved.