Облачная функция Firebase не отправляет ответ - PullRequest
0 голосов
/ 22 ноября 2018

вот мой код функции облака http, которая читает некоторые документы и затем отправляет ответ

res.set('Access-Control-Allow-Origin', '*');

    var orderId;
    var result = "";

    var userId;
    var promoCode;
    var promoRef;
    var userDocRef;

    var promoCodeDoc;

    //userId = req.body.userId;
    //orderId = req.body.orderId;
    promoCode = req.body.promoCode;

    //userDocRef = db.collection("Users").doc()
    promoRef = db.collection("PromoCodes").doc(promoCode);


    var transaction = db.runTransaction(t => {
      return t.get(promoRef)
        .then(promoCodeDoc => {
            if(promoCodeDoc.exists){
              result = "OK";
              res.json(result);
            }else{
              result = "Invalid Promocode!";
              res.json(result);

            }
          //t.update(cityRef, {population: newPopulation});
          return true;
        });
    }).then(result => {
      console.log('Transaction success!');
      return true;
    }).catch(err => {
      console.log('Transaction failure:', err);
    });

    return Promise.all(transaction());

Но это не отправка ответа, потому что функции завершаются, но транзакция Firestore все еще выполняется в фоновом режиме.Любое решение моей проблемы?

1 Ответ

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

Promise.all() ожидает один массив обещаний в качестве аргумента, но вы не передаете ему аргумент массива.Во-вторых, переменная transaction - это обещание, а не функция.Вы не можете назвать () обещанием.

Так что я думаю, что правильный код будет return Promise.all([transaction]).При этом у вас есть только одно обещание, поэтому вам не нужно Promise.all и вы можете просто return transaction.

Не уверен, что это решит все ваши проблемы.Если вы войдете в консоль Firebase, перейдите к разделу функций, там есть вкладка «Журналы», которая позволяет вам увидеть отладочные результаты выполнения ваших функций.Это может помочь вам отследить все проблемы.Я предполагаю, что в консоли уже зарегистрированы ошибки, указывающие на тот факт, что transaction() не является функцией.

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