typescript - Kan inte hämta dokument från firestore


Jag försöker logga ett dokument från Firestore i en Firebase Cloud Function. Kan någon hjälpa mig med koden?

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')
    })
}

Svar #1

Följande bör fungera:

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)
        })

    })

})

Observera att genom att ha

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

i din onUpdate-funktion:

1/ Du använder syntaxen för Realtime Database och inte för Firestore;

2/ Du sätter en händelsehanterare i en Cloud Function som redan utlöses genom en händelse (här är det ett samtal till HTTPS Cloud Function-URL:en).

Inom din HTTPS Cloud Function bör du helt enkelt använda Firestore get()-metoden för att läsa från databasen. Det är inte nödvändigt att ställa in en annan händelsehanterare eller någon lyssnare: den "engångs"-databasläsning/fråga som görs med get() utlöses varje gång HTTPS-funktionen anropas.

Du kan titta på denna officiella video: https://www.youtube.com/watch?v=7IkUgCLr5oA.

Relaterade artiklar