sql >> Base de Datos >  >> NoSQL >> MongoDB

Almacenamiento de un archivo en MongoDB usando Multer en Mongoose

Hombre, estás corriendo por el camino equivocado. Ya expliqué en su solicitud de pregunta anterior que Multer se usa para guardar archivos en el sistema de disco de archivos y no directamente en su base de datos. Para eso debes usar GRIDFS.

Llegando a tu pregunta actual.

app.post('/Upload', upload.single('solution') ,function (req, res, next) {
    console.log(req.file);
});

Aquí el upload.single('solution') - llama a la función Cargar y el nombre del archivo pasado es la solución, pero es bastante obvio que no está disponible aquí.

use este tipo de formato - documentación de Multer

var storage = multer.diskStorage({
  destination: function (req, file, cb) {
    cb(null, '/tmp/my-uploads')
  },
  filename: function (req, file, cb) {
    cb(null, file.fieldname + '-' + Date.now())
  }
})

var upload = multer({ storage: storage })

La Parte de almacenamiento allí se usa para dar la ruta a donde se debe guardar su archivo y la sección de nombre de archivo se usa para realizar cambios en el nombre de archivo que le gustaría tener.

Lea la documentación porque eso ayudará. Cuando usamos módulos de terceros, debemos reconocer la información que ya han proporcionado para que podamos usar su trabajo fácilmente.

Déjame hacértelo más fácil. Aquí hay un código listo que funciona.

Multer arroja un error extraño al cargar el archivo a través de la carga de archivos ng

Ve a revisar ese hilo. Yo planteé la pregunta:el problema era que estaba enviando archivos en formato de matriz, como en varios archivos a la vez. Si no está haciendo eso, simplemente cambie el segmento de carga de archivos ng para usar el ejemplo de demostración de carga única y en el código nodejs del lado del servidor reemplace .array con .single y las cosas funcionarán de la forma en que desea que funcionen, dado que desea utilizar el sistema de disco de archivos para almacenar archivos.

Repito que este método no te ayudará a guardar el archivo en mongodb directamente.

Avísame si necesitas más aclaraciones.