【问题标题】:Firebase Cloud Function only works with console.log()Firebase Cloud Function 仅适用于 console.log()
【发布时间】:2020-01-01 23:58:31
【问题描述】:

到目前为止,我已经为我的项目编写了一些云函数。我正在构建一个新函数addUserToEmailLists 并对其进行测试,看看它是否被简单地通过在创建文档时在文档中设置一个字段来调用,onCreate()

exports.addUserToEmailLists = functions.firestore.document('Users/{userID}/jobPreferences/myPreferences').onCreate(() => {
  console.log('Function called!'); //remove this and it doesn't work
  return db.doc(`DatabaseInfo/accounts`).set({ //update the number of preferences
        preferencesSet: 1
  }).catch(error=>{
        console.log(error);
        return error;
  });
})

起初我刚从函数中的return 直线向下,Firebase 日志一直说该函数以状态 200 执行,但未设置文档。作为最后的手段,我添加了console.log('Function called!');,它成功了!然后我删除了线路并再次部署,但它未能设置字段accountsCreated(在尝试再次触发该功能之前,又多次等待至少 3 分钟以确保)。我的其他函数没有任何 console.log() 语句,所以我不知道导致这种行为的原因。有人有什么建议吗?

【问题讨论】:

  • 嗨拉姆吉特。您是否设法找到解决方案?我有相反的问题!当我注释掉 console.log 时,它可以工作。当我包含它时,它没有
  • 我试图重现这个,但是那个确切的函数按预期工作(在我的数据库中的任意 onCreate 事件上)。在正确的位置创建文档设置指定文档中的值。无论日志语句是否存在,都会发生这种情况。唯一可能相关的是,如果此操作创建了 DatabaseInfo 集合,控制台不会自动更新——我必须手动刷新。但更新总是发生。需要更多信息才能重现。
  • @VinayakaramNagarajan 不,不幸的是我没有,但这个问题是在 firebase 函数的 v6 期间出现的。由于他们已升级到 v7,我不确定问题是否仍然存在。
  • @VinayakaramNagarajan 我知道这已经晚了,但可以发布一个新问题,其中包含您遇到的问题的代码示例并将其链接到此处?
  • 其实我已经有了。已将您的问题与此相关联:stackoverflow.com/questions/58651617/…

标签: node.js firebase google-cloud-functions


【解决方案1】:

在我看来,您正在调用一个异步函数并期望它同步运行。

也许添加一个 console.log 条目只是为函数提供了完成异步工作所需的空间。

试试这样的:

exports.addUserToEmailLists = functions.firestore.document('Users/{userID}/jobPreferences/myPreferences').onCreate(async () => {
  await db.doc(`DatabaseInfo/accounts`).set({ //update the number of preferences
        preferencesSet: 1
  });
})

【讨论】:

  • 谢谢!这就是问题所在!您能否对我遇到的相反问题发生的其中一个 cmets 有所了解?
  • 很高兴看一下,但需要代码来调试...是否有未回答的问题?
  • 按要求完成 - 如果您喜欢答案,别忘了点赞。 :)
猜你喜欢
  • 1970-01-01
  • 2020-03-03
  • 2017-12-22
  • 2020-10-26
  • 2018-10-15
  • 2018-09-09
  • 2020-03-14
  • 2017-10-01
  • 2018-11-15
相关资源
最近更新 更多