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

140
Views
Coloque elementos en DynamoDB sin conocer los atributos

Esto parece una pregunta realmente estúpida, pero mi falta de conocimiento de JS combinada con la falta de conocimiento de AWS me tiene en un aprieto. Solo estoy tratando de familiarizarme con una pila básica de AWS, es decir, Lambda/Dynamo/API Gateway para un trabajo básico de API.

Si quiero un punto final de API simple para manejar solicitudes PUT, por ejemplo, https://my.endpoint.amazonaws.com/users . Si tengo una tabla de userID con una clave primaria compuesta de ID de usuario y timestamp de tiempo, podría usar el fragmento de código a continuación para tomar los datos desconocidos (atributos que no se conocían al configurar un esquema), pero esto obviamente no funciona bien

 const dynamo = new AWS.DynamoDB.DocumentClient(); let requestJSON = JSON.parse(event.body); await dynamo .put({ TableName: "myDynamoTable", Item: { userID: requestJSON.userID, timestamp: requestJSON.timestamp, data: requestJSON.data } }) .promise();

Podría enviar una solicitud PUT con el siguiente JSON

 { "userID": "aaaa1111", "timestamp": 1649677057, "data": { "address": "Elm Street", "name": "Glen" } }

pero luego address y el name se meten en un solo atributo de DynamoDB llamado data . ¿Cómo construyo el código de node para crear un nuevo atributo llamado address y un name con los valores correspondientes, si no conocía estos atributos, es decir, quiero usar JSON en mi solicitud como se muestra a continuación, pero asumiendo que no lo sé? esto y no puedo usar requestJSON.address

 { "userID": "aaaa1111", "timestamp": 1649677057, "address": "Elm Street", "name": "Glen" }
about 4 years ago · Santiago Trujillo
2 answers
Answer question

0

Puede utilizar el operador de propagación , por ejemplo:

 const data = { address: "Elm Street", name: "Glen", }; const item = { userID: "aaaa1111", timestamp: 1649677057, ...data, }; console.log("item:", item);

about 4 years ago · Santiago Trujillo Report

0

Si insiste en el contrato API como

 { "userID": "aaaa1111", "timestamp": 1649677057, "data": { "address": "Elm Street", "name": "Glen" } }

entonces puedes hacer un mapeo en el nivel de TypeScript

 const request: {userID: string, timestamp: number, data: any} = { "userID": "aaaa1111", "timestamp": 1649677057, "data": { "address": "Elm Street", "name": "Glen" } }; const ddbObject: any = { "userID": request.userID, "timestamp": request.timestamp }; Object .keys(request.data) .forEach(key => ddbObject[key] = request.data[key]);

La representación de ddbObject es

 { "userID": "aaaa1111", "timestamp": 1649677057, "address": "Elm Street", "name": "Glen" }
about 4 years ago · Santiago Trujillo 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!