2017-10-12 5 views
0

私はgridfsファイルのアップロードに問題が発生しました。 基本的に私はこのbizzareエラーを取得し、私はまだこの問題を解決するための解決策を見つけていません。ここでGridfsとmo​​ngooseファイルのアップロード

は、ファイルのアップロードを扱う必要があります私のコードです:

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); 
    }) 
}) 

私のコードを実行しようとすると、私はこのエラーを取得:マングースのバージョン4.11.12とGridfsを使用して

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

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

イム-stream version 1.1.1
誰かがこのことを実行するために何をすべきか知っていますか?

+0

がmongoose.connection.db'が設定されていない 'のように見えると

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

を置き換えることができ、どのような接続文字列は次のように見えますか? –

答えて

0

mongoose.connection.dbは、接続文字列に不足している可能性があるため、データベース名をプルしていないように見えます。接続文字列は'mongodb://username:[email protected]:port/database?options...'のようになります。データベースは接続先のデータベースです。代わり

あなただけ

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

現在、次の接続文字列を使用しています: 'mongodb:// localhost:27017/someDb'。 (mongoose.connect( 'mongodb:// localhost:27017/someDb'))。私はこれが最小限の必要条件であることをマングース文書から読みました。接続は別のファイルでも行われますが、私が間違っている場合は私の問題に影響しないはずです。私の場合、接続文字列が問題になりますか? –

関連する問題