Измените код статуса HTTP с помощью обещания функции Google Cloud - PullRequest
0 голосов
/ 06 июля 2019

Мой код проверяет, авторизован ли пользователь, если он есть, выполняется правильный код. Если пользователь не, он запускает reject(), чтобы отклонить обещание.

Если я запускаю проверенный код, я получаю

{"error":{"status":"INVALID_ARGUMENT","message":"Bad Request"}}

Я пытаюсь изменить код состояния на Запрещенный (код 403), который вы обычно делаете с res.status(403), однако, поскольку это обещание, оно другое. Как я могу изменить возвращенный код ошибки?

Мой код выглядит следующим образом:

const cloudFunction = functions.https.onCall((data, context) => {
    return new Promise(function(resolve, reject) {
        auth.verifyIdToken(data.userId).then(function(decodedToken) {
            if(claims.admin === true) {
                // Run code if user has admin role
            }
            else {
                reject()
                // Return error code 403 because user does not have admin role
            }
        }).catch(err => reject(err)) // Return error code 401 because user is not logged in
    })
});

1 Ответ

0 голосов
/ 06 июля 2019

Вы не можете изменить статус HTTP для вызываемой функции.Вызываемые функции по существу принимают и скрывают протокол HTTP для запроса и ответа.Все, что вам нужно сделать, это указать объекты ввода и вывода, а SDK обрабатывают все остальное.

Если вам нужно контролировать состояние HTTP ответа, вам придется вместо этого использовать обычную функцию типа HTTP.Тогда у вас будет полный контроль над запросом и ответом.

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