Функции Firebase не регистрируют операторы console.log () - PullRequest
0 голосов
/ 01 ноября 2018

Я боролся с приведенной ниже функцией, чтобы в журналах Firebase не отображались операторы console.log(). Если я уберу все, начиная с вызова db.collection, появятся операторы console.log() вверху, но как только я добавлю, что вызов db.collection, none из операторов console.log() отобразится в логах Firebase.

Я не очень хорошо знаком с 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);
  });
};

Ответы [ 2 ]

0 голосов
/ 06 августа 2019

Данные, напечатанные с помощью console.log(), можно увидеть на вкладке Log конкретной функции в консоли Firebase:

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

* замените <project-name> на ваше.

0 голосов
/ 01 ноября 2018

Вы должны вернуть обещание, возвращенное асинхронным методом 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();.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...