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

85
Views
MongoDB Gridfs-stream solo elimina el archivo pero no el fragmento

Estoy tratando de eliminar un archivo y un fragmento de mi base de datos MongoDB, pero mi ruta solo elimina el archivo pero no el fragmento. He visto algunas soluciones de StackOverflow para este problema, pero ahora están desactualizadas o se basan en la función remove() obsoleta. Vi otra solución que afirmaba que agregar root: bucketName a las opciones de consulta de eliminación soluciona este problema, pero no fue así para mí.

 const router = require("express").Router(); var mongoose = require("mongoose"); var Schema = mongoose.Schema; var ObjectId = require("mongodb").ObjectId; const { authUser } = require("../middleware/auth"); const uploadMulter = require("../middleware/upload"); const Grid = require("gridfs-stream"); const connection = mongoose.connection; let gfs, gridfsBucket; connection.once("open", () => { gfs = Grid(connection.db, mongoose.mongo); }); router.delete("/files/:_id", (req, res) => { gfs .collection("profilePictures") .deleteOne({ _id: ObjectId(req.params._id) }, (err) => {});//only deletes the profilePicture.file, but not profilePicture.chunk });

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

0

Descubrí que usar delete() elimina tanto el fragmento como el archivo, pero debe ejecutarse en gridfsBucket . Todas las demás "soluciones" en StackOverflow usan remove() o deleteOne() en gfs .

El problema con esta solución es que la función de delete() solo funciona con BSON _id's por lo que si desea eliminar archivos según el nombre de archivo o los metadatos, entonces no funcionará.

 router.delete("/files/:_id", (req, res) => { gridfsBucket = new mongoose.mongo.GridFSBucket(connection.db, { bucketName: "profilePictures", }); gridfsBucket.delete(ObjectId(req.params._id)); });

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!