Error: The database connection must be open to store files
Error: The database connection must be open to store files
我正在使用 mongodb atlas 将我的数据存储在云中,但我无法存储它,因为我不断遇到同样的错误
Error:The 必须打开数据库连接才能存储文件
我的服务器端代码
const mongoURI = 'mongodb+srv://caman3874:qwertyuiopaman1234@@amanco-pexfz.mongodb.net/test?retryWrites=true&w=majority';
const conn = mongoose.createConnection(mongoURI,{useNewUrlParser:true});
let gfs;
conn.once('open', () => {
gfs = Grid(conn.db, mongoose.mongo);
gfs.collection('uploads');
console.log("connection made successfully");
});
const storage = new GridFsStorage({
url: mongoURI,
file: (req, file) => {
return new Promise((resolve, reject) => {
crypto.randomBytes(16, (err, buf) => {
if (err) {
return reject(err);
}
const filename = buf.toString('hex') + path.extname(file.originalname);
const fileInfo = {
filename: filename,
bucketName: 'uploads'
};
resolve(fileInfo);
});
});
}
});
const upload = multer({ storage });
app.get('/',(req,res)=>{
res.render('index');
});
app.post('/upload', upload.single('file'), (req, res) => {
res.json({ file: req.file });
});
const port = 5000;
app.listen(port, () => console.log(`Server started on port ${port}`));
我的html代码
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css" integrity="sha384-Gn5384xqQ1aoWXA+058RXPxPg6fy4IWvTNh0E263XmFcJlSAwiGgFAW/dAiS6JXm"
crossorigin="anonymous">
</style>
<title>Mongo File Uploads</title>
</head>
<body>
<div class="container">
<div class="row">
<div class="col-md-6 m-auto">
<form action="/upload" method="POST" enctype="multipart/form-data">
<div class="custom-file mb-3">
<input type="file" name="file" id="file" class="custom-file-input">
<label for="file" class="custom-file-label">Choose File</label>
</div>
<input type="submit" value="Submit" class="btn btn-primary btn-block">
</form>
</div>
</div>
</div>
<script src="https://code.jquery.com/jquery-3.2.1.slim.min.js" integrity="sha384-KJ3o2DKtIkvYIK3UENzmM7KCkRr/rE9/Qpg6aAZGJwFDMVNA/GpGFF93hXpG5KkN"
crossorigin="anonymous"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.12.9/umd/popper.min.js" integrity="sha384-ApNbgh9B+Y1QKtv3Rn7W3mgPxhU9K/ScQsAP7hUibX39j7fakFPskvXusvfa0b4Q"
crossorigin="anonymous"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/js/bootstrap.min.js" integrity="sha384-JZR6Spejh4U02d8jOt6vLEHfe/JQGiRRSQQxSfFWpi1MquVdAyjUar5+76PVCmYl"
crossorigin="anonymous"></script>
</body>
</html>
错误:必须打开数据库连接才能存储文件
在 GridFSStorage._handleFile(C:\Users807\Desktop\mongo\node_modules\multer-gridfs-storage\lib\gridfs.js:339:17)
在 C:\Users807\Desktop\mongo\node_modules\multer\lib\make-middleware.js:144:17
在 allowAll (C:\Users807\Desktop\mongo\node_modules\multer\index.js:8:3)
在 wrappedFileFilter (C:\Users807\Desktop\mongo\node_modules\multer\index.js:44:7)
在 Busboy。 (C:\Users807\Desktop\mongo\node_modules\multer\lib\make-middleware.js:114:7)
在 Busboy.emit (events.js:209:13)
在 Busboy.emit(C:\Users807\Desktop\mongo\node_modules\busboy\lib\main.js:38:33)
在 PartStream。 (C:\Users807\Desktop\mongo\node_modules\busboy\lib\types\multipart.js:213:13)
在 PartStream.emit (events.js:209:13)
在 HeaderParser。 (C:\Users807\Desktop\mongo\node_modules\dicer\lib\Dicer.js:51:16)
在 HeaderParser.emit (events.js:209:13)
在 HeaderParser._finish(C:\Users807\Desktop\mongo\node_modules\dicer\lib\HeaderParser.js:68:8)
在 SBMH。 (C:\Users807\Desktop\mongo\node_modules\dicer\lib\HeaderParser.js:40:12)
在 SBMH.emit (events.js:209:13)
在 SBMH._sbmh_feed(C:\Users807\Desktop\mongo\node_modules\streamsearch\lib\sbmh.js:159:14)
在 SBMH.push (C:\Users807\Desktop\mongo\node_modules\streamsearch\lib\sbmh.js:56:14)
const mongoURI = 'mongodb+srv://caman3874:qwertyuiopaman1234@@amanco-pexfz.mongodb.net/test?retryWrites=true&w=majority';
const promise = mongoose.connect(mongoURI, { useNewUrlParser: true });
const conn = mongoose.connection;
let gfs;
conn.once('open',() => {
gfs = Grid(conn, mongoose.mongo);
gfs.collection('uploads');
});
//create storage object
const storage = new GridFsStorage({
db: promise,
file: (req, file) => {
return new Promise((resolve, reject) => {
crypto.randomBytes(16, (err, buf) => {
if (err) {
return reject(err);
}
const filename = buf.toString('hex') + path.extname(file.originalname);
const fileInfo = {
filename: filename,
bucketName: 'uploads'
};
resolve(fileInfo);
});
});
}
});
const upload = multer({ storage });
希望这有效!
我正在使用 mongodb atlas 将我的数据存储在云中,但我无法存储它,因为我不断遇到同样的错误 Error:The 必须打开数据库连接才能存储文件
我的服务器端代码
const mongoURI = 'mongodb+srv://caman3874:qwertyuiopaman1234@@amanco-pexfz.mongodb.net/test?retryWrites=true&w=majority';
const conn = mongoose.createConnection(mongoURI,{useNewUrlParser:true});
let gfs;
conn.once('open', () => {
gfs = Grid(conn.db, mongoose.mongo);
gfs.collection('uploads');
console.log("connection made successfully");
});
const storage = new GridFsStorage({
url: mongoURI,
file: (req, file) => {
return new Promise((resolve, reject) => {
crypto.randomBytes(16, (err, buf) => {
if (err) {
return reject(err);
}
const filename = buf.toString('hex') + path.extname(file.originalname);
const fileInfo = {
filename: filename,
bucketName: 'uploads'
};
resolve(fileInfo);
});
});
}
});
const upload = multer({ storage });
app.get('/',(req,res)=>{
res.render('index');
});
app.post('/upload', upload.single('file'), (req, res) => {
res.json({ file: req.file });
});
const port = 5000;
app.listen(port, () => console.log(`Server started on port ${port}`));
我的html代码
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css" integrity="sha384-Gn5384xqQ1aoWXA+058RXPxPg6fy4IWvTNh0E263XmFcJlSAwiGgFAW/dAiS6JXm"
crossorigin="anonymous">
</style>
<title>Mongo File Uploads</title>
</head>
<body>
<div class="container">
<div class="row">
<div class="col-md-6 m-auto">
<form action="/upload" method="POST" enctype="multipart/form-data">
<div class="custom-file mb-3">
<input type="file" name="file" id="file" class="custom-file-input">
<label for="file" class="custom-file-label">Choose File</label>
</div>
<input type="submit" value="Submit" class="btn btn-primary btn-block">
</form>
</div>
</div>
</div>
<script src="https://code.jquery.com/jquery-3.2.1.slim.min.js" integrity="sha384-KJ3o2DKtIkvYIK3UENzmM7KCkRr/rE9/Qpg6aAZGJwFDMVNA/GpGFF93hXpG5KkN"
crossorigin="anonymous"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.12.9/umd/popper.min.js" integrity="sha384-ApNbgh9B+Y1QKtv3Rn7W3mgPxhU9K/ScQsAP7hUibX39j7fakFPskvXusvfa0b4Q"
crossorigin="anonymous"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/js/bootstrap.min.js" integrity="sha384-JZR6Spejh4U02d8jOt6vLEHfe/JQGiRRSQQxSfFWpi1MquVdAyjUar5+76PVCmYl"
crossorigin="anonymous"></script>
</body>
</html>
错误:必须打开数据库连接才能存储文件 在 GridFSStorage._handleFile(C:\Users807\Desktop\mongo\node_modules\multer-gridfs-storage\lib\gridfs.js:339:17) 在 C:\Users807\Desktop\mongo\node_modules\multer\lib\make-middleware.js:144:17 在 allowAll (C:\Users807\Desktop\mongo\node_modules\multer\index.js:8:3) 在 wrappedFileFilter (C:\Users807\Desktop\mongo\node_modules\multer\index.js:44:7) 在 Busboy。 (C:\Users807\Desktop\mongo\node_modules\multer\lib\make-middleware.js:114:7) 在 Busboy.emit (events.js:209:13) 在 Busboy.emit(C:\Users807\Desktop\mongo\node_modules\busboy\lib\main.js:38:33) 在 PartStream。 (C:\Users807\Desktop\mongo\node_modules\busboy\lib\types\multipart.js:213:13) 在 PartStream.emit (events.js:209:13) 在 HeaderParser。 (C:\Users807\Desktop\mongo\node_modules\dicer\lib\Dicer.js:51:16) 在 HeaderParser.emit (events.js:209:13) 在 HeaderParser._finish(C:\Users807\Desktop\mongo\node_modules\dicer\lib\HeaderParser.js:68:8) 在 SBMH。 (C:\Users807\Desktop\mongo\node_modules\dicer\lib\HeaderParser.js:40:12) 在 SBMH.emit (events.js:209:13) 在 SBMH._sbmh_feed(C:\Users807\Desktop\mongo\node_modules\streamsearch\lib\sbmh.js:159:14) 在 SBMH.push (C:\Users807\Desktop\mongo\node_modules\streamsearch\lib\sbmh.js:56:14)
const mongoURI = 'mongodb+srv://caman3874:qwertyuiopaman1234@@amanco-pexfz.mongodb.net/test?retryWrites=true&w=majority';
const promise = mongoose.connect(mongoURI, { useNewUrlParser: true });
const conn = mongoose.connection;
let gfs;
conn.once('open',() => {
gfs = Grid(conn, mongoose.mongo);
gfs.collection('uploads');
});
//create storage object
const storage = new GridFsStorage({
db: promise,
file: (req, file) => {
return new Promise((resolve, reject) => {
crypto.randomBytes(16, (err, buf) => {
if (err) {
return reject(err);
}
const filename = buf.toString('hex') + path.extname(file.originalname);
const fileInfo = {
filename: filename,
bucketName: 'uploads'
};
resolve(fileInfo);
});
});
}
});
const upload = multer({ storage });
希望这有效!