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 tempsCrypter 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 publicIntégrez-vous à un fournisseur de paiement comme Stripe pour traiter automatiquement les paiements lors de leur
OrdercréationRecalculez 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 valideGénérer et stocker une
lastLoggedIndate sur un utilisateur en ajoutant unafterLoginhookAjoutez 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