Функции Firebase - res.status не определен - PullRequest
0 голосов
/ 12 октября 2019

Это мой код, который я выполняю:

exports.checkPin = functions.https.onCall(async (req, res) => {
    let roomDoc = await db.collection('Rooms').where('roomNum', "==", req.roomNum).get();
    if (roomDoc.exists) {
        if (bcrypt.compareSync(roomDoc.data().pin, req.pin)) {
            res.status(200).send("authorised");
        } else {
            res.status(401).send("unauthorised");
        }
    } else {
        res.status(401).send("unauthorised");
    }
});

После выполнения кода выдается сообщение о том, что res.status() - это undefined

Я что-то не так делаю? Я хочу иметь возможность отправлять ответный HTTP-код после завершения функции firebase, если это не правильный способ сделать это?

1 Ответ

2 голосов
/ 12 октября 2019

Вы смешиваете Функции вызываемого облака и Функции облака HTTP .

Выполнение res.status(XXX).send("..."); должно выполняться в функции облака HTTP, а не в вызываемомодин.

Также , обратите внимание, что roomDoc возвращает QuerySnapshot, а не DocumentSnapshot.

Таким образом, вы должны адаптировать свою функцию следующим образом (при условии, что запрос вернет только один документ):

exports.checkPin = functions.https.onRequest(async (req, res) => {  // <--- See here, we use onRequest and not onCall


    const querySnapshot = await db.collection('Rooms').where('roomNum', "==", req.roomNum).get();

    if (!querySnapshot.empty) {

       const roomDoc = querySnapshot.docs[0];

        if (bcrypt.compareSync(roomDoc.data().pin, req.pin)) {
            res.send("authorised");
        } else {
            res.status(500).send("unauthorised");
        }

    } else {

        res.status(500).send("unauthorised");

     }

PS: вы можете посмотреть это официальное видео на HTTPS Cloud Functions: https://www.youtube.com/watch?v=7IkUgCLr5oA&t=1s&list=PLl-K7zZEsYLkPZHe41m4jfAxUi0JjLgSM&index=3

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