EventoObtenha 50% de desconto no seu ingresso para MongoDB.local Londres em outubro 2. Use o código WEB50Saiba mais >>
Desenvolvedor MongoDB
Central de desenvolvedor do MongoDBchevron-right
Produtoschevron-right
Atlaschevron-right

Realm Atlas Triggers Mimos e Triggers - Agendamento trigger baseado em documentos

Pavel Duchovny5 min read • Published Dec 20, 2021 • Updated Sep 09, 2024
Atlas
Ícone do FacebookÍcone do Twitterícone do linkedin
Avalie esse Artigo
star-empty
star-empty
star-empty
star-empty
star-empty
Some features mentioned below will be deprecated on Sep. 30, 2025. Learn more.
In this blog series, we are trying to inspire you with some reactive Realm trigger use cases. We hope these will help you bring your application pipelines to the next level.
Essencialmente, os gatilhos são componentes em nossos aplicativos Atlas Projects/Realm que permitem ao usuário definir uma função personalizada a ser invocada em um evento específico.
  • Gatilhos de banco de dados: temos gatilhos que podem ser agendados com base em eventos de banco de dados, como deletes, inserts, updatese replaces- chamados de gatilhos de banco de dados.
  • Triggers programados: podemos agendar um trigger com base em uma expressão cronpor meiode triggers programados.
  • Gatilhos de autenticação: esses gatilhos são relevantes apenas para autenticação de Realm. Eles são acionados por um dos eventos de autenticação dos provedores de autenticação do Realm e podem ser configurados apenas por meio de um aplicativo do Realm.
Para esta postagem do blog, gostaria de me concentrar nos padrões de agendamento de trigger.
Deixe-me apresentar um caso de uso e veremos como a mecânica discutida pode nos ajudar nesse cenário. Considere um aplicativo de gerenciamento de reuniões que agenda reuniões e, como parte de sua funcionalidade, precisa notificar um usuário 10 minutos antes da reunião.
Como criaríamos um trigger que seria acionado 10 minutos antes de um carimbo de data/hora que só é conhecido pelo documento " meeting "?
Primeiro, vamos dar uma olhada no exemplo de documentos da coleção de sessões:
Queira compartilhar uma solução interessante com base em triggers e, ao longo deste artigo, usaremos um exemplo de notificação de reunião para explicar a abordagem discutida.

Pré-requisitos

Primeiro, verifique se você tem um projeto do Atlas com privilégios de proprietário para criar triggers.
Se você ainda não configurou seu cluster gratuito no MongoDB Atlas, agora é um ótimo momento para fazer isso. Você tem todas as instruções nesta publicação no blog.

A ideia por trás do mecanismo principal

Usarei o exemplo de evento como um documento de origem iniciando o fluxo com uma inserção em uma collectionmeetings:
Depois de inserirmos este documento na collectionmeetings, ele criará o seguinte registro em uma collection auxiliar chamada notifications usando um trigger de inserção:
A hora e _id são calculadas a partir do documento de origem e têm como objetivo disparar quando 2021-03-10:50:00:00Z chegar por meio de um trigger fireScheduleTasks . Esse trigger é baseado em uma operação de exclusão de umTTL no campo triggerDate do notifications.
É quando o usuário recebe o alerta!
Em um alto nível, aqui está o fluxo descrito acima.
Um documento de reunião é rastreado por um trigger, criando um documento de notificação. Este documento, no horário especificado, causará um evento de exclusão. A exclusão disparará um trigger de notificação para notificar o usuário.
Um documento de reunião é rastreado por um trigger, criando um documento de notificação. Este documento, no horário especificado, causará um evento de exclusão. A exclusão disparará um trigger de notificação para notificar o usuário.
Existem três componentes principais que permitem que nosso sistema seja trigger com base nos dados do documento.

1. Definir uma coleção auxiliar de notificações

Primeiro, precisamos preparar nossa coleçãonotifications. Esta coleção será criada implicitamente pelo seguinte comando de criação de índice.
Agora criaremos um índice TTL. Esse índice fará com que o documento de agendamento expire quando o valor no campotriggerDate chegar a sua vida útil de expiração de 0 segundos após seu valor.

2. Criando um trigger para preencher a collection de agendamento

Ao configurar seu triggerscheduleTasks, certifique-se de fornecer o seguinte:
  1. Serviço Atlas vinculado e verifique seu nome.
  2. O nome do banco de dados e da coleção em que baseamos o agendamento, por exemplo, meetings.
  3. A operação de trigger relevante que queremos agendar, por exemplo, quando um evento é inserido.
  4. Vincule-o a uma função que executará a population de collection de cronograma.
A configuração da interface do usuário do trigger para preencher a collection de agendamento.
A configuração da interface do usuário do trigger para preencher a collection de agendamento.
Para preencher a coleçãonotificationscom datas de acionamento relevantes, precisamos monitorar nossos documentos na coleção de origem. No nosso caso, os dados da próxima reunião do usuário são armazenados na coleção "meeting" com o campo userId. Nosso acionador monitorará as inserções para preencher um documento Scheduled.
Importante: Substitua <ATLAS-SERVICE> e <DATABASE> pelos seus nomes de serviço e banco de dados vinculados.

3. Construindo o trigger para executar a ação na "data do trigger"

Para React ao TTL "delete" event que acontece exatamente quando queremos que nossa tarefa agendada seja executada, precisamos usar um trigger de banco de dados "na exclusão" que chamei fireScheduleTasks.
Ao configurar seu triggerfireScheduleTasks, certifique-se de fornecer o seguinte:
  1. Serviço Atlas vinculado e verifique seu nome.
  2. O banco de dados e a coleção de notificações, por exemplo, notifications.
  3. A operação de trigger relevante que queremos agendar, que é "DELETE".
  4. Vincule-o a uma função que executará a tarefa disparada.
Agora que preenchemos a coleçãonotifications com o triggerDate, sabemos que o índice TTL disparará um evento de "exclusão" com o _idexcluído relevante para que possamos agir em nossa tarefa.
No meu caso, 10 minutos antes do início do evento do usuário, meu documento atingirá sua vida útil e enviarei uma mensagem de texto usando o serviço Twilio para o telefone do participante.
Um pré-requisito para esse estágio será configurar um serviço do Twilio usando suas credenciais de cloud do Twilio.
  1. Certifique-se de ter uma conta de cloud do Twilio com seu SID e seu token de autenticação.
  2. Configure o token SID e Auth na configuração de serviço Realm Twilio.
  3. Configure seu serviço e número de telefone doTwilio Messaging .
Depois de implementá-lo, podemos usá-lo para enviar notificações por SMS aos nossos convidados.
Importante: Substitua <ATLAS-SERVICE> e <DATABASE> pelos seus nomes de serviço e banco de dados vinculados.
Foi assim que o evento foi disparado no momento apropriado.

Embrulhar

Com a técnica apresentada, podemos aproveitar os padrões de trigger existentes para criar novos. Isso pode abrir sua mente para outras ideias para projetar seus próximos fluxos no MongoDB Realm.
No seguinte artigo desta série, aprenderemos como podemos implementar o incremento automático com triggers.
Se tiver dúvidas, acesse o site da nossa comunidade de desenvolvedores, no qual os engenheiros e a comunidade do MongoDB ajudarão você a desenvolver sua próxima grande ideia com o MongoDB.

Ícone do FacebookÍcone do Twitterícone do linkedin
Avalie esse Artigo
star-empty
star-empty
star-empty
star-empty
star-empty
Relacionado
Início rápido

Clique único para o sucesso: implantar em Netlify, Vercel, Heróku e Render com Atlas


Apr 10, 2024 | 6 min read
Artigo

Uma REST API gratuita para o conjunto de dados COVID-19 da Johns Hopkins University


Aug 15, 2024 | 5 min read
Tutorial

Build a JavaScript AI Agent With LangGraph.js and MongoDB


Sep 18, 2024 | 15 min read
Tutorial

Parte #3: pesquise seus dados semanticamente com o Atlas Vector Search do MongoDB


Sep 18, 2024 | 6 min read
Sumário