2017-07-20 1 views
0

Donc j'essaie d'enregistrer un fichier image en l'envoyant en multipart dans mon MongoDB via GridFS. J'utilise multer et l'option memoryStorage.Enregistrer le tampon à partir de l'express avec GridFS dans MongoDB

let upload = multer({ storage: multer.memoryStorage() }).single('imageFile'); 
app.use(upload); 

A l'intérieur de la route j'accéder à la mémoire tampon comme ceci:

let buffer: Buffer = req.file.buffer; 

Cela fonctionne bien et je suis aux prises avec sauver ce tampon à mon MongoDB.

let writeStream = this.gfs.createWriteStream({ 
      mode: 'w', 
      filename: 'Image', 
      content_type: 'image/png' 
     }); 
streamifier.createReadStream(buffer).pipe(writeStream); 

Voici comment j'essaie de sauvegarder le tampon dans mon MongoDB.

Mongoose: fs.files.ensureIndex([ [ 'filename', 1 ] ], { w: 1 }) 
Mongoose: fs.chunks.ensureIndex([ [ 'files_id', 1 ], [ 'n', 1 ] ], { w: 1, unique: true }) 
Mongoose: fs.files.findOne({ _id: ObjectId("597089c973179c0138eef7ae") }, { w: 1, readPreference: 'primary' }) 

Ceci est le journal que j'obtiens de mon MongoDB. Mais rien n'est stocké dans la base de données.

Est-ce que quelqu'un a une solution? Déjà essayé this solution mais cela n'a pas fonctionné pour moi.

Répondre

0

Donc apparemment le problème n'était pas le code que j'ai posté. Cela fonctionne mais assurez-vous que votre fichier gfs est chargé avec l'instance MongoDB et non la connexion.