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

92
Views
Use literales de plantilla con lógica condicional en la mutación hasura GQL

Tengo una mutación gql para hasura que se inserta y actualiza en función de si $vendorLicenseId se ha pasado a id de la siguiente manera:

 export const UPDATE_LICENSE = gql` mutation UpdateLicense( $vendorId: Int! $licenseId: Int! $vendorLicenseId: Int ) { insert_license_one( object: { id: $vendorLicenseId: vendor_id: $vendorId license_id: $licenseId } on_conflict: { constraint: license_pkey update_columns: [ license_number license_id ] } ) { id license_id vendor_id license_number } } `;

El problema es que no es anulable y si lo dejo como el resto de las variables, como arriba y no paso el ID de licencia del proveedor, pasa a hasura como nulo (obviamente) y falla:

¿Hay alguna manera de verificar la mutación para que exista la variable y, si no, simplemente omite la línea completa?

algo como esto:

 export const UPDATE_LICENSE = gql` mutation UpdateLicense( $vendorId: Int! $licenseId: Int! $vendorLicenseId: Int ) { insert_license_one( object: { ${ $vendorLicenseId ? `id: $vendorLicenseId`: ``} vendor_id: $vendorId license_id: $licenseId } on_conflict: { constraint: license_pkey update_columns: [ license_number license_id ] } ) { id license_id vendor_id license_number } } `;

He probado variaciones de esto y no puedo hacer que funcione. ¿Hay una manera correcta o mejor manera de hacer esto?

about 4 years ago · Juan Pablo Isaza
1 answers
Answer question

0

Esto es lo que hice para arreglar esto.

En lugar de intentar insertar lógica dentro de la cadena con literales de plantilla, intercepté las variables antes, agregué condiciones y luego pasé el objeto completo.

Entonces, en mi definición de API:

 export const updateLicense = async ({ userId, licenseId, vendorLicenseId dispatch, getState, }: licenseUpdateParams & BaseAPIRequest) => { const licenseVars: any = { user_id: userId, license_id: licenseId, }; // it's non-nullable in hasura, but we need to omit it for insert so only pass it in if exists if (licenseId) licenseVars.id = vendorLicenseId; return await SIGraphQL.graphqlRequest({ gql: UPDATE_LICENSE, variables: { licenseVars, }, getState, dispatch, }); }; export const UPDATE_LICENSE = gql` mutation UpdateLicense( $licenseVars: license_insert_input!) { insert_license_one( object: $licenseVars on_conflict: { constraint: license_pkey update_columns: [ license_number license_id ] } ) { id license_id user_id license_number }

} `;

about 4 years ago · Juan Pablo Isaza Report
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!