【问题标题】:Cloud functions for firebase with transaction operation finished with status: 'timeout'具有事务操作的 Firebase 的云功能已完成状态:“超时”
【发布时间】:2017-09-24 12:29:12
【问题描述】:

事务操作的函数超时。我无法找出问题所在。我不确定这是否是 firebase 的问题。

exports.ComputeUserReviews = functions.database.ref("/reviews/{userid}/{jobid}").onWrite((event) => {
  const userid = event.params.userid;
  const parentRefPromise =  admin.database().ref(`reviews/${userid}`).once('value');
  const UserReviewRef = admin.database().ref(`users/${userid}/account`);
  return Promise.all([parentRefPromise]).then(results => {
    const userReviewSnapshot = results[0];
    const hasreviewPromise = UserReviewRef.child("hasreview").transaction(current => {
      if (userReviewSnapshot.numChildren() === 0) {
          return false;
      } else if (userReviewSnapshot.numChildren() > 0) {
          return true;
      }
    });
    const reviewcountPromise =  UserReviewRef.child("reviewcount").transaction(current => {
      if (event.data.exists() && !event.data.previous.exists()) {
        return (current || 0) + 1;
      } else if (!event.data.exists() && event.data.previous.exists()) {
        return (current || 0) - 1;
      }
    });
    return Promise.all([hasreviewPromise, reviewcountPromise]);
  });
});

【问题讨论】:

  • 根据这个问题,firebase 存在问题,我不确定这个问题是否会影响我的功能stackoverflow.com/questions/43151022/…
  • 您是否尝试过其他帖子中的解决方案?成功了吗?
  • 不,它没有工作,它仍然超时。尝试过:` const IncrementProposalJob = new Promise(function(resolve, reject) { jobRef.transaction(current => { return (current || 0) + 1; }, () => resolve(null)); }); `
  • 我们是否应该忽略这个错误并等待它修复?
  • 我正在自己的一些项目中积极使用这种解决方法。但它最终应该得到解决。

标签: firebase firebase-realtime-database google-cloud-functions


【解决方案1】:

firebase SDK 存在问题,作为一种解决方法,添加 .then(()=>{console.log('message');}); 修复超时。

const reviewcountPromise =  UserReviewRef.child("reviewcount").transaction(current => {
  if (event.data.exists() && !event.data.previous.exists()) {
    return (current || 0) + 1;
  } else if (!event.data.exists() && event.data.previous.exists()) {
    return (current || 0) - 1;
  }
}).then(()=>{console.log('message');});

【讨论】:

    猜你喜欢
    • 2017-08-26
    • 2019-12-04
    • 1970-01-01
    • 2019-05-15
    • 2021-10-22
    • 2019-02-14
    • 2018-05-17
    • 2017-11-12
    • 1970-01-01
    相关资源
    最近更新 更多