Не могу получить документ из пожарного магазина - PullRequest
0 голосов
/ 12 января 2019

enter image description here Я пытаюсь console.log документа из Firestore в облачной функции Firebase. Может кто-нибудь помочь мне с кодом?

export const getUser = functions.https.onRequest((req, res) => {
    const uid = req.query.uid

    corsHandler(req, res, () => {
        onUpdate(res, uid)

    })

})

function onUpdate(res, uid) {
    functions.database.ref(`/profiles/{profileId}`).onUpdate((change, context) => {
        const profileId = uid

        console.log('BEFORE: ', change.before.val())
        res.send('OK')
    })
}

1 Ответ

0 голосов
/ 12 января 2019

Должно работать следующее:

export const getUser = functions.https.onRequest((req, res) => {
    const uid = req.query.uid

    corsHandler(req, res, () => {

       admin.firestore().collection('profiles').doc(uid).get()
       .then(snapshot => {
          console.log(snapshot.data())
          res.send('OK')
       })
       .catch(err => {
          console.error('ERROR:', err)
          res.status(500).send(err)
        })

    })

})

Обратите внимание, что, имея

functions.database.ref(`/profiles/{profileId}`).onUpdate()

в вашей функции onUpdate:

1 / Вы используете синтаксис для базы данных реального времени, а не для Firestore;

2 / Вы устанавливаете обработчик события в облачной функции, которая уже запускается через событие (являющееся здесь вызовом URL-адреса облачной функции HTTPS).

В вашей облачной функции HTTPS вы должны просто использовать метод Firestore get() для чтения из базы данных. Нет необходимости устанавливать другой обработчик событий или любой прослушиватель: «одноразовое» чтение / запрос к базе данных, выполненное с get(), будет запускаться при каждом вызове функции HTTPS.

Вы можете посмотреть это официальное видео: https://www.youtube.com/watch?v=7IkUgCLr5oA.

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