Как сделать несколько запросов на выборку внутри функций Firebase?

#javascript #node.js #firebase #google-cloud-functions

#javascript #node.js #firebase #google-cloud-функции

Вопрос:

Я пытаюсь сделать 2 запроса на выборку внутри функции, которая выполняется периодически.

 exports.scheduledPay = functions.pubsub.schedule('1 of month 07:00').timeZone('America/New_York').onRun((context) => {
  //1. fetch for getting token ...
  //2. fetch for making Paypal batch request using that token
    fetch("https://api.sandbox.paypal.com/v1/payments/payouts", {
      method: 'POST',
      headers: {"Authorization":"Basic QWJ4aUhTaWM5cmp2NUpQdEV2WUhaMi1hWmVySWFoTHdDVDEza004UURLY3RMWGtXN3lpTFRfVGpFVllVMXB5NFhKcGtxXzdYSVpYRmhkaFc6RVBUbUVZSWg2OE1FVG9FSjEyT0lHdzFKWkFGNTVza2Q2SjNiRmpLYkxMTEJiOTY3akRhQkdRREt1S29yTWN4amZ3Rm00X0VCa1dvUzJkejn="},
      body: {"grant_type":"client_credentials"},
      redirect: 'follow'
    })
    .then(response => {return response.text()})
    .then(result => {console.log(result);
      return null;
    })
    .catch(error => console.log('error', error));
}
  

Тем не менее, я продолжаю получать эту ошибку.

 ReferenceError: fetch is not defined
    at exports.scheduledAward.functions.pubsub.schedule.timeZone.onRun (/workspace/index.js:230:5)
    at cloudFunction (/workspace/node_modules/firebase-functions/lib/cloud-functions.js:130:23)
    at Promise.resolve.then (/layers/google.nodejs.functions-framework/functions-framework/node_modules/@google-cloud/functions-framework/build/src/invoker.js:199:28)
    at process._tickCallback (internal/process/next_tick.js:68:7) 
  

Комментарии:

1. Привет, Dinaol, добро пожаловать в SO! Похоже, что в вашем вопросе есть подтекст «вот моя проблема, реши ее за меня», что, к сожалению, не то, для чего нужен SO. Для начала, в теле вопроса даже нет вопроса, только утверждения. Вы пробовали исследовать сообщение об ошибке, которое получаете? Буквально первый результат поиска в Google дает вам то, что вы ищете.

Ответ №1:

Облачные функции выполняются в среде JavaScript nodejs. Это сильно отличается от сред JavaScript браузера. У вас не будет доступа к fetch() функции, предоставляемой браузерами — это объясняет сообщение об ошибке.

Вместо этого вам нужно будет использовать какой-либо другой тип клиентской библиотеки HTTP, созданной для nodejs. Существует множество популярных вариантов, и я рекомендую выполнить поиск в Интернете, чтобы найти один.