Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

185
Views
Envolver expresiones genéricas en una función

Soy parte de n8n.io , un proyecto de código abierto, y estamos buscando una manera de ayudar a nuestros usuarios a manipular datos.

Nuestra herramienta permite a los usuarios obtener datos de cualquier fuente (base de datos, solicitudes http, servicios de cola, etc.), manipular y hacer otras cosas, como enviar un correo electrónico, crear un cliente potencial en Hubspot, etc. Es una herramienta de automatización de flujo de trabajo.

Ya proporcionamos formas para que nuestros usuarios asignen datos de un lugar a otro, como obtener un nombre de usuario de una base de datos y enviarlo como el nombre del cliente potencial a Hubspot. Pero los usuarios pueden querer manipular estos datos antes de enviarlos.

Queremos agregar funciones auxiliares para esto.

Nuestros usuarios ya pueden usar un motor de plantillas para hacer algunas cosas interesantes, como:

{{ username.toUpperCase() }}

Dado que el nombre de username en el ejemplo anterior es una cadena, y toUpperCase() es la función de cadena nativa.

Nos gustaría extender este comportamiento. Añadir más funcionalidad. Por ejemplo, algo como {{ email.isEmail() ? email : '' }} donde isEmail es una nueva función que nos gustaría proporcionar y email es simplemente una cadena.

Una nota importante es que nos gustaría que estas funciones fueran encadenables en lugar de simplemente funciones para evitar el infierno de los paréntesis.

Pensé en extender los prototipos nativos, pero esto tiene muchos efectos secundarios, especialmente porque también queremos extender las propiedades de los Object (con funciones como .hasField('username') o .removeField('name') . Prototipos extendidos terminó rompiendo muchas cosas, por lo que no podemos seguir este camino .

Además, los usuarios pueden realizar operaciones matemáticas, como {{ (age + 5) / 2 }} , por lo que necesitamos operaciones que funcionen con números, cadenas, objetos y matrices.

Agradecería cualquier idea sobre cómo lograr esto: proporcionar funciones que se puedan encadenar para manipular datos .

Nos gustaría evitar obligar a nuestros usuarios a incluir sus datos en una función auxiliar, como {{ _(name).firstName().toUpperCase() }} . En este caso, implementaríamos la función _ como asistente y tendríamos todos los métodos implementados dentro de ella, según el tipo de datos.

¿Hay alguna manera de envolver cualquier expresión en una función auxiliar , como la mencionada anteriormente? Una expresión regular que sea a prueba de fallas sería increíble.

Tenga en cuenta que las expresiones pueden ser muy arbitrarias, como:

 {{ (5 + 2 ).isPrime () ? 'This is prime' : 42 }}

El ejemplo anterior es una expresión perfectamente válida, y mi objetivo es envolver la sección (5+2) en nuestra función de ayuda para que el resultado final, antes de enviarlo a nuestro motor de plantillas, se vea así:

 {{ _((5 + 2 )).isPrime () ? 'This is prime' : 42 }}
about 4 years ago · Juan Pablo Isaza
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!