2017-10-12 56 views
0

我已經遇到了gridfs文件上傳的問題。 基本上我得到這個bizzare錯誤,我還沒有找到解決這個問題的解決方案。Gridfs和貓鼬文件上傳

這裏是我的代碼,應處理文件上傳:

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

當試圖運行我的代碼,我得到這個錯誤:

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

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

進出口使用貓鼬版本4.11.12和GridFS的流版本1.1.1
有誰知道應該怎麼做才能使這個東西工作?

+0

看起來像'mongoose.connection.db'沒有設置,那麼你的連接字符串是什麼樣子? –

回答

0

看起來像mongoose.connection.db在數據庫名稱不拉,因爲它在連接字符串可能丟失,您的連接字符串應該像'mongodb://username:[email protected]:port/database?options...'其中database是要連接到數據庫。

或者只需更換

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

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

目前我正在使用以下連接字符串:'mongodb:// localhost:27017/someDb'。 (mongoose.connect( '的mongodb://本地主機:27017/someDb'))。我從貓鼬的文檔中讀到這是最低要求的要求。連接在另一個文件中完成,但如果我錯了,糾正我,這不應該對我的問題有影響。那麼在我的情況下連接字符串是一個問題? –