2017-10-12 9 views
0

J'ai rencontré un problème avec le téléchargement de fichiers gridfs. Fondamentalement, je reçois cette erreur bizzare et je n'ai pas encore trouvé de solution pour résoudre ce problème.Téléchargement de fichiers Gridfs et mongoose

Voici mon code qui devrait traiter avec le fichier télécharger:

var path = require('path'); 
var router = require('express').Router(); 
var mongoose = require('mongoose'); 
var serverConfig = require('../config.js'); 
var multiparty = require('connect-multiparty')(); 
var fs = require('fs'); 
var GridFs = require('gridfs-stream'); 


var db = mongoose.connection.db; 
var mongoDriver = mongoose.mongo; 
var gfs = new Gridfs(db, mongoDriver); 

router.post('/upload', multiparty, function(req, res){ 
    console.log("file was posted"); 
    var writestream = gfs.createWriteStream({ 
     filename: req.files.file.name + Date.now(), 
     mode: 'w', 
     content_type: req.files.file.mimetype, 
     metadata: req.body 
    }); 
    fs.createReadStream(req.files.file.path).pipe(writestream); 
    writestream.on('close', function(file){ 
     res.status(200).json(file); 
    }) 
}) 

Lorsque vous essayez d'exécuter mon code, je reçois cette erreur:

if (!db) throw new Error('missing db argument\nnew Grid(db, mongo)'); 
     ^

Error: missing db argument 
new Grid(db, mongo) 

Im en utilisant la version 4.11.12 et Mongoose GridFS -stream version 1.1.1
Est-ce que quelqu'un sait ce qui devrait être fait pour que cette chose fonctionne?

+0

On dirait que 'mongoose.connection.db' n'est pas défini, qu'est-ce que la chaîne de connexion ressemble? –

Répondre

0

On dirait mongoose.connection.db ne tire pas dans le nom de la base de données car il manque peut-être sur la chaîne de connexion, votre chaîne de connexion devrait ressembler 'mongodb://username:[email protected]:port/database?options...' où la base de données est la base de données que vous souhaitez vous connecter.

Sinon, vous pouvez simplement remplacer

var db = mongoose.connection.db; 
var mongoDriver = mongoose.mongo; 
var gfs = new Gridfs(db, mongoDriver); 

avec

var mongoDriver = mongoose.mongo; 
var gfs = new Gridfs("myDatabase", mongoDriver); 
+0

Actuellement, j'utilise la chaîne de connexion suivante: 'mongodb: // localhost: 27017/someDb'. (mongoose.connect ('mongodb: // localhost: 27017/someDb')). J'ai lu de la documentation de mangouste que c'est l'exigence minimum nécessaire. La connexion est faite dans un autre fichier, mais corrigez-moi si je me trompe, cela ne devrait pas avoir d'effet sur mon problème. La chaîne de connexion est donc un problème dans mon cas? –