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

169
Views
Manejo del análisis del resultado de la consulta de DynamoDB

Supongamos que estoy trabajando en una aplicación que implementa el diseño de una sola tabla en DynamoDB. La tabla contiene organizaciones y usuarios, lo que da como resultado algo como esto:

ingrese la descripción de la imagen aquí

Con el SDK de AWS , puedo emitir un QueryCommand en mi tabla y recuperar toda la información y los registros relacionados con mi organización (el cuadro rojo en la imagen de arriba) ejecutando algo como esto:

 const params = { TableName: 'dynamo-table-name', KeyConditionExpression: '#PK = :PK', ExpressionAttributeNames: { '#PK': 'PK', }, ExpressionAttributeValues: { ':PK': 'ORG#MICROSOFT', }, }; const result = await client.send(new QueryCommand(params));

Dado que estoy usando @aws-sdk/lib-dynamodb el resultado vuelve como una matriz de objetos JS, lo cual es bueno, pero me encuentro con el siguiente problema. Una vez que tenga esos datos, me gustaría hacer lo siguiente:

Convierte esto:

 [ { "PK": "ORG#MICROSOFT", "SK": "METADATA#MICROSOFT", "OrgName": "Microsoft", "PlanType": "Enterprise", }, { "PK": "ORG#MICROSOFT", "SK": "USER#BILLGATES", "UserName": "Bill Gates", "UserType": "Member" }, { "PK": "ORG#MICROSOFT", "SK": "USER#SATYANADELLA", "UserName": "Satya Nadella", "UserType": "Admin" } ]

A algo como esto:

 { "result": [ { "OrgName": "Microsoft", "PlanType": "Enterprise", "Users": [ { "UserName": "Bill Gates", "UserType": "Member" }, { "UserName": "Satya Nadella", "UserType": "Admin" } ] } ] }

He luchado para encontrar una solución elegante. Mis intentos hasta este punto hicieron uso de la función de reducción de JavaScript, pero nunca terminaron sintiéndose lo suficientemente robustos como para ser algo que realmente consideraría usar. La mayoría de mis problemas provienen del hecho de que me gustaría que también funcionara si tuviera no solo usuarios para una organización, sino también algo más, como tal vez ubicaciones. También estoy buscando algo que, en el caso de que busque todas las organizaciones, pueda obtenerlas en el formato deseado. ¿Alguien tiene alguna sugerencia sobre cómo podría hacer esto?

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

0

Aquí hay una idea de cómo resolver esto. No estoy seguro si mejora sustancialmente sobre lo que ya has probado. Incruste la matriz de result resultante según sea necesario, por ejemplo, {result} .

Este código usa filtros repetidos sobre los mismos datos, por lo que, si bien es fácil de entender y modificar, no es óptimo para un gran conjunto de datos.

 const records = [ { PK: "ORG#MICROSOFT", SK: "METADATA#MICROSOFT", OrgName: "Microsoft", PlanType: "Enterprise", }, { PK: "ORG#MICROSOFT", SK: "USER#BILLGATES", UserName: "Bill Gates", UserType: "Member", }, { PK: "ORG#MICROSOFT", SK: "USER#SATYANADELLA", UserName: "Satya Nadella", UserType: "Admin", }, { PK: "ORG#APPLE", SK: "METADATA#APPLE", OrgName: "Apple", PlanType: "Enterprise", }, { PK: "ORG#APPLE", SK: "USER#TIMCOOK", UserName: "Tim Cook", UserType: "Admin", }, ]; const orgs = records.filter((rec) => rec.OrgName); const users = records.filter((rec) => rec.UserName); const result = orgs.map((org) => ({ OrgName: org.OrgName, PlanType: org.PlanType, Users: users .filter((user) => user.PK === org.PK) .map(({ UserName, UserType }) => ({ UserName, UserType })), })); console.log(result);

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!