Облачная функция Firebase: возвращает строку Base64 в json - PullRequest
0 голосов
/ 30 января 2020

Я пишу облачную функцию Firebase, которая принимает URL-адрес и преобразует содержимое URL-адреса (которое может быть pdf-документами / изображениями) в строку base64 и возвращает ее в объекте json. Моя текущая реализация обнаружила следующее сообщение об ошибке:

Выполнение функции заняло 1522 мс, завершено с состоянием: «ошибка ответа»

Журналы ошибок не были зарегистрированы.

Пока мой код:

module.exports = functions.https.onRequest((req, res) => {
    let url = req.query.url
    return getBuffer(url)
    .then((buf) => {
        let base64String = buf.toString('base64')
        let responseObject = JSON.stringify({'base64': base64String})
        res.status(200).json(responseObject)
    })
    .catch((err) => {
        console.log("Error getting buf", err)
    })
});

Ответным объектом является действительный json (проверено с помощью онлайн json валидатора), и base64String тоже выглядит корректно (ie нет недопустимых символов, таких как как двойная обратная косая черта).

Советы приветствуются, спасибо.

1 Ответ

0 голосов
/ 30 января 2020

Похоже, ваш код выполняет слишком много работы для генерации ответа. Если вы хотите отправить сериализованный JSON для объекта, просто сделайте это:

res.status(200).json({'base64': base64String})

Метод res. json () автоматически сериализует строку, поэтому вы не нужно вызывать JSON .stringify ().

Также имейте в виду, что Cloud Functions ограничивает общий размер ответа до 10 МБ, поэтому, если ваш сериализованный объект больше этого, вы можете ожидать это не удастся.

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