Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

171
Vistas
Ejecutando código antes y después de la mutación graphql neo4j apollo server

Apenas estoy comenzando con GraphQL y hasta ahora he trabajado principalmente con featherjs para crear API REST. Existe el concepto de ganchos para ejecutar código antes o después de interactuar con un servicio. Quería saber si hay una manera de lograr algo similar en una configuración de graphql.

La pila específica que estoy usando es neo4j y graphql , express y apollo server . Dado que neo4j tiene un módulo graphql, no estoy escribiendo las consultas y mutaciones generales, solo los tipos de modelos.

Para un ejemplo concreto, a continuación se muestra un servidor API básico. Se arma usando docker compose y tiene usuarios y aplicaciones. En general, me gustaría poder ejecutar código arbitrario antes o después de una mutación con acceso al modelo que se está modificando. Cosas como una validación más compleja antes o efectos secundarios después.

Esas cosas podrían estar aquí, por ejemplo, antes de cambiar el estado de una aplicación a declined , asegúrese de que se agregue una nota. O después de cambiar el estado a approved , envíe un correo electrónico al solicitante.

No estoy seguro de cómo o dónde implementar este tipo de cosas, ¡cualquier ayuda es apreciada! O también si estoy pensando mal en graphql y hay una mejor manera de hacer lo que estoy tratando de hacer.

¡Gracias!

 import http from 'http'; import express from 'express'; import neo4j from 'neo4j-driver'; import {Neo4jGraphQL} from '@neo4j/graphql'; import {gql, ApolloServer} from 'apollo-server-express'; import {ApolloServerPluginDrainHttpServer} from 'apollo-server-core'; const typeDefs=gql` type User { email: String! applications: [Application!] @relationship(type: "APPLICANT", direction: OUT) } type Application { user: User! @relationship(type: "APPLICANT", direction: IN) state: String! note: String } `; const driver=neo4j.driver( 'neo4j://neo4j:7687', neo4j.auth.basic('neo4j', 'password') ); const {schema}=new Neo4jGraphQL({typeDefs, driver}); (async ()=>{ const app=express(); const server=http.createServer(app); const apollo=new ApolloServer({ schema, plugins: [ApolloServerPluginDrainHttpServer({httpServer: server})] }); await apollo.start(); apollo.applyMiddleware({app}); await new Promise(r=>server.listen({port: 4000}, r)); console.log('GraphQL server listening at '+apollo.graphqlPath); })();
about 4 years ago · Juan Pablo Isaza
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda