繁体   English   中英

Firebase 函数不记录“console.log()”语句

[英]Firebase functions not logging "console.log()" statements

我一直在为下面的函数苦苦挣扎,没有在 Firebase 日志中显示它的console.log()语句。 如果我拿出一切开始与db.collection调用, console.log()语句在顶部会显示出来,但一旦我再补充一点db.collection呼叫,也没有发生console.log()语句火力地堡的显示日志。

我对 JavaScript 不是很熟悉(我通常使用 Python 进行后端编程),所以这可能是 Promises 工作方式的问题。 我现在正在研究这个。

知道发生了什么吗?

exports.purchaseItem = functions.https.onCall((data, context) => {
  console.log('data:')
  console.log(data)
  let lbcCustomerStripeToken = data.lbcCustomerStripeToken
  let lbcStoreId = data.lbcStoreId
  let amount = data.amount
  console.log('lbcCustomerStripeToken:')
  console.log(lbcCustomerStripeToken)
  console.log('lbcStoreId:')
  console.log(lbcStoreId)
  console.log('amount:')
  console.log(amount)

  let lbcFee = Math.round(amount * 0.02)

  db.collection('stores').doc(lbcStoreId).get().then(lbcStore => {
    if (!lbcStore.exists) {
      console.log('No such product!');
    } else {
      console.log('Document data:', product.data());
    }
    console.log('storeInfo:')
    console.log(lbcStore.data())
    return {message: 'Success'}
  })    
  .catch((error) => {
    console.log(error);
  });
};

您必须返回异步get()方法返回的承诺,请参阅此处的文档其中指出“要在异步操作后返回数据,请返回一个承诺。承诺返回的数据将发送回客户端。”

所以以下应该工作:

exports.purchaseItem = functions.https.onCall((data, context) => {
  console.log('data:')
  console.log(data)
  let lbcCustomerStripeToken = data.lbcCustomerStripeToken
  let lbcStoreId = data.lbcStoreId
  let amount = data.amount
  console.log('lbcCustomerStripeToken:')
  console.log(lbcCustomerStripeToken)
  console.log('lbcStoreId:')
  console.log(lbcStoreId)
  console.log('amount:')
  console.log(amount)

  let lbcFee = Math.round(amount * 0.02)

  return db.collection('stores').doc(lbcStoreId).get().then(lbcStore => {
    if (!lbcStore.exists) {
      console.log('No such product!');
    } else {
      console.log('Document data:', product.data());
    }
    console.log('storeInfo:')
    console.log(lbcStore.data())
    return {message: 'Success'}
  })    
  .catch((error) => {
    // To be adapted here, see https://firebase.google.com/docs/functions/callable#handle_errors
    console.log(error);
  });
};

另请注意,您应该针对错误处理部分调整代码,请参阅https://firebase.google.com/docs/functions/callable#handle_errors

最后,确保你的db常量是用admin.firestore();定义的admin.firestore(); .

您可以在 Firebase 控制台的特定函数的Log选项卡中查看通过console.log()打印的数据:

https://console.firebase.google.com/u/0/project/<project-name>/functions/logs

*将<project-name>更改为您的(不带< > )。

*您可能需要选择特定的功能/日志级别才能实时查看日志。

您还可以使用文档中所说的查看日志:

https://firebase.google.com/docs/functions/writing-and-viewing-logs#viewing_logs

使用 firebase 工具查看日志

firebase functions:log

查看特定功能的日志

firebase functions:log --only <FUNCTION_NAME>

暂无
暂无

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

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