Hooks

Les hooks sont des moyens puissants de se connecter aux actions existantes afin d'ajouter votre propre logique, comme l'intégration avec des API tierces, l'ajout de données générées automatiquement .

Cas d'utlisation

  • Intégrer les profils utilisateur à un CRM tiers tel que Salesforce ou Hubspot

  • Envoyer une copie des fichiers téléchargés vers Amazon S3 ou similaire

  • Ajoutez automatiquement lastModifiedBydes données à un document pour suivre qui a modifié quoi au fil du temps

  • Crypter les données d'un champ lors de leur enregistrement et les décrypter lors de leur lecture

  • Envoyer des e-mails lorsque ContactSubmissiondes s sont créés à partir d'un site Web public

  • Intégrez-vous à un fournisseur de paiement comme Stripe pour traiter automatiquement les paiements lors de leur Ordercréation

  • Recalculez en toute sécurité les prix des commandes sur le backend pour garantir que le prix total des Ordercommandes soumises par les utilisateurs est exact et valide

  • Générer et stocker une lastLoggedIndate sur un utilisateur en ajoutant un afterLoginhook

  • Ajoutez des données supplémentaires aux documents avant leur lecture, telles que des « scores moyens » ou des données similaires qui doivent être calculées à la volée

Les types d'hooks

  • beforeOperation

  • beforeInsert

  • afterInsert

  • beforeDelete

  • afterDelete

  • beforeFind

  • afterFind

  • beforeUpdate

  • afterUpdate

  • beforeAggregate

  • afterAggregate

  • beforeCount

  • afterCount

Les configurations d'hooks

beforeOperation

Elle permet de faire des controles sur les données avant d' entamer le cycle de vie d'action


import { define } from "@dnax/core";

export default define.Collection({
  slug: "clients",
  hooks: {
    beforeOperation: ({ data ,action}) => { // Logic before All action
        if(action=='insertOne'){
            // Set secondary Id based on month
            data.pk = '2024-01-01'+Math.random()
        }

    },
  },
});

beforeInsert

import { define } from "@dnax/core";

export default define.Collection({
  slug: "clients",
  hooks: {
    beforeInsert: async ({ data, action, sharedData, c }) => {
      // get Client IP
    //  let IP = c?.req.raw.headers.get("CF-Connecting-IP");
    //  let geoIp = await geoip.lookup(IP);

      // Provide user location information
     // data.geodata = geoIp;
    },
  },
});

afterInsert

import { define ,utils } from "@dnax/core";

export default define.Collection({
  slug: "clients",
  hooks: {
    afterInsert: async ({ data, action, sharedData, c }) => {
    
    // Send confirmation registered
    /*  utils.email.send({
            mailOptions:{
                from:'[email protected]',
                to:'[email protected]',
                subject:'Confirmation',
                html:`<h1>Hello ${data?.fullname}</h1>`
            }
        }) */


    },
  },
});

Last updated