es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Cómo puedo eliminar el objeto S3 desde Node.js Mongo utilizando la URL de ubicación?

He publicado el archivo PDF en el bucket de S3 y guardo la ruta URL de retorno de ubicación del archivo en la base de datos MongoDB. Ahora quiero eliminar esos datos de archivo obteniendo la ruta URL de ubicación del archivo mongoid de MongoDB. No entiendo cómo puedo obtener los parámetros de AWS a través de la ruta URL y cómo puedo eliminar ambos. Entonces por favor ayúdame, ¿cómo puedo eliminar este archivo?

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Para eliminar un archivo de Amazon S3 utilizando la ruta URL obtenida de MongoDB, debes seguir los siguientes pasos:

    1. Obtén la ruta URL del archivo desde MongoDB utilizando la variable id.
    2. Analiza la URL para extraer los parámetros necesarios como Bucket y Key.
    3. Utiliza estos parámetros para crear una referencia de objeto S3 utilizando la biblioteca aws-sdk.
    4. Invoca una operación de eliminación en la referencia del objeto S3 pasando el Bucket y Key.
    5. Una vez que la operación de eliminación se complete correctamente, elimina la entrada correspondiente de MongoDB utilizando el método S3Epdf.remove.

    Aquí tienes el código modificado con comentarios explicando los pasos:

    router.delete('/:epdfurl', async function(req, res, next) {
      const id = req.params.epdfurl;
    
      // Obtén la ruta URL desde MongoDB utilizando el id
      const file = await S3Epdf.findOne({ _id: id });
    
      // Analiza la ruta URL para extraer los parámetros necesarios
      const urlParts = file.url.split('/');
      const Bucket = urlParts[2];
      const Key = urlParts.slice(3).join('/');
    
      // Crea una referencia de objeto S3 utilizando la biblioteca aws-sdk
      const s3 = new AWS.S3({
        accessKeyId: process.env.AWS_ACCESS_KEY_ID,
        secretAccessKey: process.env.AWS_SECRET_ACCESS_KEY,
        region: process.env.AWS_REGION
      });
    
      // Invoca la operación de eliminación en la referencia del objeto S3
      s3.deleteObject({ Bucket, Key }, (error, data) => {
        if (error) {
          res.status(500).send({ "err": error });
        }
    
        // Una vez que la operación de eliminación se completa correctamente, elimina la entrada correspondiente de MongoDB
        S3Epdf.remove({ _id: id })
          .exec()
          .then(result => {
            res.send(result);
          })
          .catch(err => {
            res.send(err);
          });
      });
    });
    

Comments are closed.