В облачных функциях HTTP Firebase, как я могу вернуть объект обратно клиентскому приложению в функции оплаты полосы? - PullRequest
0 голосов
/ 05 октября 2018

У меня есть http-облачная функция Firebase

exports.createCharge = functions.https.onCall((data, context) =>{

В этой функции я создаю полосовой заряд

return stripe.charges.create(chargeInfo, { idempotency_key }, function (err, charge){

        if(err){
            return err.message;
        }else{
            return "done";
        }

    });

Полосовой заряд является последней строкой кода в httpфункция.Моя проблема в том, что сообщение об ошибке не возвращается клиенту, а task.getResult() в моем приложении возвращается как ноль после завершения.Кроме того, переменные не сохраняются вне полосы заряда.err и charge должны использоваться в рамках функции зарядки полосы, как если бы функция зарядки полосы работала в собственной среде.Как я могу вернуть err или charge обратно клиенту?

1 Ответ

0 голосов
/ 05 октября 2018

Stripe.charges.create - это вызов asynchronous, и для возврата результатов / ошибок асинхронного вызова функция Firebase требует, чтобы вы вернули Promise, который вернет значение [0]

Итак,для того, чтобы err или charge, вместо использования callback, например, какой пример кода вы опубликовали, следует использовать promise.then.

return stripe.charges.create(chargeInfo, { idempotency_key })
  .then((charge) => charge)
  .catch((error) => error);

Надеюсь, что это поможет решить вашу проблему.

[0] https://firebase.google.com/docs/functions/callable

...