Skip to content

Instantly share code, notes, and snippets.

@faustoct1
Last active July 8, 2022 16:11
Show Gist options
  • Save faustoct1/74100e292940392da746cd8e157bd0db to your computer and use it in GitHub Desktop.
Save faustoct1/74100e292940392da746cd8e157bd0db to your computer and use it in GitHub Desktop.
Executar triggers do firebase após insert, update e delete
/*
As vezes queremos executar uma ação após um insert, update e delete no firestore.
Por exemplo após inserir um registro ou documento querer indexar no algolia,
elasticsearch para consultas full text search, ou querer executar algum job/work
para uma ação específica.
As triggers onCreate, onWrite, onUpdate, onDelete possibilita vc executar qq ação
após a execução de create, write, update ou delete no firestore.
No exemplo abaixo sempre que algum post for adicionado as funções serão chamadas
automaticamente.
Adicione as linhas abaixo ao seu functions/index.js.
Faça deploy para refletir as alterações:
firebase deploy --only functions
*/
exports.onCreate = functions.firestore.document('posts/{id}').onCreate(async (snap, context) => {
const {id} = context.params
const data = snap.data()
console.log('id',id)
console.log('data',data)
return {}
})
exports.onDelete = functions.firestore.document('posts/{id}').onDelete(async (snap, context) => {
const {id} = context.params
const data = snap.data()
console.log('id',id)
console.log('data',data)
return {}
});
exports.onUpdate = functions.firestore.document('posts/{id}').onUpdate(async (change, context) => {
// Obter novos valores
const newData = change.after.data()
// Obter valores antigos
const previousData = change.before.data()
// Acessar os campos com os valores antigos
console.log('previousData', newData)
// Acessar os campos com os novos valores
console.log('newData', newData)
console.log('params',context.params)
});
exports.onDelete = functions.firestore.document('posts/{id}').onDelete(async (snap, context) => {
// Obtém o objeto deletado
const deletedValue = snap.data()
console.log('deletedValue',deletedValue)
console.log('params',context.params)
});
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment