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.
