Squeak.ru - шаблоны программирования

Заявление о возврате приложения Firebase Cloud Functions Express

В настоящее время я создаю функцию Firebase Cloud, которая использует Spotify API.

Теперь я знаю, что этот код работает, так как я также использовал его до того, как создал на его основе приложение Express.

Но с тех пор я не могу заставить свою облачную функцию что-либо возвращать ...

Я действительно не понимаю, что делаю неправильно.

const app = express();
app.use(cors({ origin: true }));

app.get("/", (req, res) => res.send("No track specified"));
app.get("/:track", (req, res) => res.send(getTrack(req.params.track)));

function getTrack(track) {
  // Set up Auth options
  console.log(track);

  const spotify_auth_options = {
    url: "https://accounts.spotify.com/api/token",
    headers: {
      Authorization:
        "Basic " +
        new Buffer(spotify_client_id + ":" + spotify_client_secret).toString(
          "base64"
        )
    },
    form: {
      grant_type: "client_credentials"
    },
    json: true
  };

  request.post(spotify_auth_options, function(error, response, body) {
    if (!error && response.statusCode === 200) {
      console.log("No error");
      // use the access token to access the Spotify Web API
      var token = body.access_token;
      var options = {
        url: "https://api.spotify.com/v1/search?q=" + track,
        headers: {
          Authorization: "Bearer " + token
        },
        json: true
      };

      request.get(options, function(error, response, body) {
        console.log(body.tracks);
        return body.tracks;
      });
    }
  });
}

exports.searchTrack = functions.https.onRequest(app);

  • Вы пытаетесь использовать ключевое слово return, глубоко вложенное в два обратных вызова, чтобы вернуть данные из функции верхнего уровня, которая фактически является асинхронной. Это точно не сработает. Рассмотрите возможность более эффективного использования обещаний или передайте объект Response функции, которая генерирует окончательный ответ, и вызовите ее оттуда. 19.11.2018
  • Дуг, похоже, это решение. Не могли бы вы выразить это как ответ, чтобы другие могли проголосовать за него? 21.11.2018

Ответы:


1

Как упоминал Дуг в разделе комментариев к этому вопросу, похоже, что ваше выражение возврата отсутствует в соответствующем разделе. Он вложен глубоко в два обратных вызова, которые возвращают данные функции верхнего уровня. Если вы хотите, чтобы этот код работал и возвращал запрашиваемые вами переменные, рассмотрите возможность переноса этого оператора возврата в функцию, которая генерирует окончательный ответ в вашем коде.

26.11.2018
Новые материалы

Угловая структура архитектуры
Обратите внимание, что эта статья устарела, я решил создать новую с лучшей структурой и с учетом автономных компонентов: https://medium.com/@marekpanti/angular-standalone-architecture-b645edd0d54a..

«Данные, которые большинство людей используют для обучения своих моделей искусственного интеллекта, поставляются со встроенным…
Первоначально опубликовано HalkTalks: https://hacktown.com.br/blog/blog/os-dados-que-a-maioria-das-pessoas-usa-para-treinar-seus-modelos-de-inteligencia-artificial- ja-vem-com-um-vies-embutido/..

Сильный ИИ против слабого ИИ: различия парадигм искусственного интеллекта
В последние годы изучению и развитию искусственного интеллекта (ИИ) уделяется большое внимание и прогресс. Сильный ИИ и Слабый ИИ — две основные парадигмы в области искусственного интеллекта...

Правильный способ добавить Firebase в ваш проект React с помощью React Hooks
React + Firebase - это мощная комбинация для быстрого и безопасного создания приложений, от проверки концепции до массового производства. Раньше (знаете, несколько месяцев назад) добавление..

Создайте API с помощью Python FastAPI
Создание API с помощью Python становится очень простым при использовании пакета FastAPI. После установки и импорта вы можете создать приложение FastAPI и указать несколько конечных точек. Каждой..

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

Получить бесплатный хостинг для разработчиков | Разместите свой сайт за несколько шагов 🔥
Статические веб-сайты — это веб-страницы с фиксированным содержанием и его постоянным содержанием. Но теперь статические сайты также обрабатывают динамические данные с помощью API и запросов...