当前位置: 首页 > 知识库问答 >
问题:

Firebase事务返回null并无误地完成

洪弘亮
2023-03-14

问题是返回的数据为NULL。我知道当客户机数据过时时,这是可能的,但是函数没有错误地退出,并且提交为false。

当我使用完全相同的引用来检索数据快照时,将返回正确的值。

var ref = admin.database(devDB).ref('/path/to/countValue');
ref.transaction(function(count) {
  if(count != null) {
     var newCount = count + 1;
     return newCount;
  }
 }, function(error, committed, ss) {
     if(error) {
        console.log('error: ', error);
     }
     console.log('committed: ', committed);
});

共有1个答案

凌朗
2023-03-14

可以预期,事务处理程序的第一次调用将为您提供一个null值。文件中说明了这一点:

多次调用事务函数

您的事务处理程序被多次调用,并且必须能够处理空数据。即使数据库中存在现有数据,在运行事务函数时也可能不会对其进行本地缓存。

upvotesRef.transaction(function (current_value) {
  return (current_value || 0) + 1;
});
 类似资料:
  • 你能告诉我如何只对某些代码块运行事务吗?我有@Transactional的服务函数,并从它们调用存储库函数,在那里执行查询。但当查询失败时,由于事务必须结束,服务功能也随之失效。那么,当存储库函数失败时,如何返回null值呢?我需要在失败时捕获空值,并继续一些逻辑。我的代码: 我尝试了@davidxxx的答案,得到了这个错误:

  • 在我的应用程序中,我试图从Firebase数据库中获取用户信息,但它总是返回NULL。下面是我从数据库中读取当前用户信息的代码 我的问题是,如果email和name的字段不是空的,为什么“observesingleevent”方法返回null?我怎么才能修好这个?

  • 我试图弄清楚如何从angular 6/typescript应用程序向firebase数据库编写事务。 下面是我使用的一个工作示例作为指导: 我确定的关键部分如下: 1)创建一个数组来保存事务:const transactions=[]; 2)开始事务:返回db.runtransactions(function(transactions){… 3)使用事务:transaction.set(newPh

  • 我正在尝试将自定义对象上载到Firebase Firestore,但Firestore对象应包含下载图像url。我必须这样做的想法是先上传图像,等待图像完成,获取下载url的引用,更新我的自定义类,然后将其上传到Firestore。然后,当最后一次上传(上传到Firestore)完成时,我想通知我的视图。我想通过返回一个任务来实现这一点。以下是我上传图片的方法: 我不确定如何返回Firstore上

  • 我花了几个小时来查找为什么我的代码没有从这个结构X:/中检索到文件“firstname”的原因 当我在debug中时,我可以看到Firebase检索与“firstname”相同级别的所有其他字段,但最后一个字段始终为null,即使它中有有效数据。 这是我创建FireStoreRecyclerOptions的行: 这是我的QueryFireStore: 而X类是一个POJO,包含以下数据结构:

  • 我将数据保存到会话中,但是我尝试将其读回,结果为空。Spring MVC是我的后端,Angular 4是前端。 爪哇: 角: 你知道我错过了什么吗?也许是CORS的事?