Tengo el siguiente código para eliminar un contacto de mi contactApp, que usa axios en React para enviar la solicitud:
export const removeContact = createAsyncThunk( 'contactsApp/contacts/removeContact', async (contactId, { dispatch, getState }) => { await axios.delete('https://api.com/prod', { key1: `${contactId}` }); console.log(">>>>>>>" + contactId) return contactId; } );y esta es la función de Lambda para eliminar el elemento de la tabla de DynamoDB:
var params = { TableName : 'Contacts', Key: { id: event.key1 }, }; var documentClient = new AWS.DynamoDB.DocumentClient({region: "us-west-2"}); documentClient.delete(params, function(err, data) { if (err) console.log(err); else console.log(data); });El problema es que el elemento no se eliminará de la tabla y el motivo es que Lambda no recibe el "identificador de contacto" de ReactApp, que contiene el identificador que debe eliminarse. Porque cuando pruebo el código de Lambda como el siguiente, funciona:
Key: { id: "123" //Actual ID in table },Así que creo que el problema es este en reaccionar:
key1: `${contactId}`¿Qué me estoy perdiendo?
Las solicitudes DELETE no tienen cuerpo.
usar
await axios.delete('https://api.com/prod', { data: {key1: `${contactId}`} });