我正在使用节点服务器将文档作为 blob 上传到 mongodb 数据库中。我在启动自身的节点服务器上使用猫鼬启动了连接。但是在调用上传 API 时出现以下错误。
Error: The database connection must be open to store files
at GridFSStorage._handleFile (C:\Arun\MobileRosterApplication\serverSide\node_modules\multer-gridfs-storage\lib\gridfs.js:410:17)
at C:\Arun\MobileRosterApplication\serverSide\node_modules\multer\lib\make-middleware.js:144:17
at allowAll (C:\Arun\MobileRosterApplication\serverSide\node_modules\multer\index.js:8:3)
at wrappedFileFilter (C:\Arun\MobileRosterApplication\serverSide\node_modules\multer\index.js:44:7)
at Busboy.<anonymous> (C:\Arun\MobileRosterApplication\serverSide\node_modules\multer\lib\make-middleware.js:114:7)
at emitMany (events.js:147:13)
at Busboy.emit (events.js:224:7)
at Busboy.emit (C:\Arun\MobileRosterApplication\serverSide\node_modules\busboy\lib\main.js:38:33)
at PartStream.<anonymous> (C:\Arun\MobileRosterApplication\serverSide\node_modules\busboy\lib\types\multipart.js:213:13)
at emitOne (events.js:116:13)
at PartStream.emit (events.js:211:7)
at HeaderParser.<anonymous> (C:\Arun\MobileRosterApplication\serverSide\node_modules\dicer\lib\Dicer.js:51:16)
at emitOne (events.js:116:13)
at HeaderParser.emit (events.js:211:7)
at HeaderParser._finish (C:\Arun\MobileRosterApplication\serverSide\node_modules\dicer\lib\HeaderParser.js:68:8)
at SBMH.<anonymous> (C:\Arun\MobileRosterApplication\serverSide\node_modules\dicer\lib\HeaderParser.js:40:12)
但是节点已经连接到 mongo db,我也可以访问其他 API。请找到我的
server.js
var mongoose = require('mongoose');
var Grid = require('gridfs-stream');
.................
.................
mongoose.connect('mongodb://127.0.0.1/testerDB', function (err) {
if (err) {
console.log('error occured while opening connection to database');
} else {
var conn = mongoose.connection;
Grid.mongo = mongoose.mongo;
global.gfs = Grid(conn.db);
var document = require('./routes/documentRoutes')
}
documentRoutes.js
var express = require('express')
var router = express.Router()
var multer = require('multer');
var path = require("path");
var fs = require('fs');
var blobStorage = GridFsStorage({
gfs: gfs,
filename: function (req, file, cb) {
var datetimestamp = Date.now();
cb(null, file.fieldname + '-' + datetimestamp + '.' +
file.originalname.split('.')[file.originalname.split('.').length - 1]);
},
metadata: function (req, file, cb) {
cb(null, { originalname: file.originalname });
},
root: 'ctFiles'
});
var blobUpload = multer({
storage: blobStorage
})
router.post("/uploadBlob", blobUpload.single('file'), function
(req,res, next) {
if (req.file && req.file.filename) {
res.send({ "fileName": req.file.filename, "orginalName":
req.file.originalname
});
} else {
res.status(500).send({ "error": 'Unexpected error occured.' });
}
});
请帮助查找问题。