2017-10-12 240 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'))。我从猫鼬的文档中读到这是最低要求的要求。连接在另一个文件中完成,但如果我错了,纠正我,这不应该对我的问题有影响。那么在我的情况下连接字符串是一个问题? –