繁体   English   中英

如何在 cloud_firestore_odm 中运行事务?

[英]How to run transaction in cloud_firestore_odm?

我想运行事务以使用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',
  );

由于 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与“参考”。 但作为一个好处,事务对象是完全类型化的。

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

试试这个:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM