Nodejs基础开发新建项目报错throw new Error('Required MongoStore option `db` missing')
Nodejs基础开发新建项目报错throw new Error(‘Required MongoStore option db
missing’)
明明都是照着书来写,但是遇到版本的问题真的好多,一路百度过来。在这里卡住了。建立MongoDB数据库链接,老是报错。 package.json也配置了,models文件夹也建立。settings.js也有了。但是还是错。求高人指点…
D:\node\microblog\node_modules\connect-mongo\lib\connect-mongo.js:96
throw new Error(‘Required MongoStore option db
missing’);
^
Error: Required MongoStore option db
missing
at new MongoStore (D:\node\microblog\node_modules\connect-mongo\lib\connect-
mongo.js:96:15)
at Object.<anonymous> (D:\node\microblog\app.js:33:12)
at Module._compile (module.js:456:26)
at Object.Module._extensions…js (module.js:474:10)
at Module.load (module.js:356:32)
at Function.Module._load (module.js:312:12)
at Function.Module.runMain (module.js:497:10)
at startup (node.js:119:16)
at node.js:906:3
Node.js 基础开发新建项目报错 throw new Error('Required MongoStore option
dbmissing')
问题描述
在使用 Node.js 进行开发时,尝试连接 MongoDB 数据库过程中遇到了一个错误:throw new Error('Required MongoStore option
dbmissing')
。这个问题通常出现在使用 connect-mongo
插件来管理 session 时。
解决方案
这个错误提示表明在配置 MongoStore
时,缺少了一个必需的选项 db
。db
选项是用来指定 MongoDB 的数据库实例的。
下面是解决此问题的步骤及示例代码:
-
安装必要的依赖: 确保你已经安装了
express-session
和connect-mongo
,如果没有安装可以使用以下命令:npm install express-session connect-mongo
-
正确配置
MongoStore
: 在你的应用启动文件(如app.js
或server.js
)中,确保你在创建MongoStore
实例时正确地传入了db
参数。假设你已经有了一个 MongoDB 客户端实例mongoose
或mongodb
。示例代码:
const express = require('express'); const session = require('express-session'); const MongoStore = require('connect-mongo')(session); const mongoose = require('mongoose'); // 如果你使用 mongoose const app = express(); // 连接 MongoDB mongoose.connect('mongodb://localhost/microblog', { useNewUrlParser: true, useUnifiedTopology: true, }); const db = mongoose.connection; // 配置 session 中间件 app.use(session({ secret: 'your-secret-key', resave: false, saveUninitialized: false, store: new MongoStore({ mongooseConnection: db }), })); // 其他中间件和路由定义... app.listen(3000, () => { console.log('Server is running on port 3000'); });
如果你没有使用
mongoose
,而是直接使用mongodb
客户端,那么你可以这样配置:const MongoClient = require('mongodb').MongoClient; const url = 'mongodb://localhost:27017'; MongoClient.connect(url, { useNewUrlParser: true, useUnifiedTopology: true }, function(err, client) { if (err) throw err; console.log("Database connected!"); const db = client.db('microblog'); app.use(session({ secret: 'your-secret-key', resave: false, saveUninitialized: false, store: new MongoStore({ db: db }), })); // 其他代码... });
通过上述步骤,你应该能够正确配置 MongoStore
并避免出现 Required MongoStore option
dbmissing
的错误。
调试参数有缺少, 把代码贴了看吧
他这个microblog是有很多地方与现在的有些包版本所不符,建议楼主在社区里搜下 不然,以后楼主更加的郁闷 :)
请问一下这个解决了吗?
根据你的描述,错误信息表明在使用 connect-mongo
模块时缺少 db
配置项。这通常是因为在创建 MongoStore
实例时没有正确传递 MongoDB 连接对象。
示例代码
假设你有一个 app.js
文件,并且你想在其中设置会话存储到 MongoDB 中。以下是如何正确设置 MongoStore
的一个简单示例:
安装依赖
确保你已经安装了必要的 npm 包:
npm install express connect-mongo mongoose
设置 MongoDB 连接
在你的 app.js
文件中,你需要先创建一个 MongoDB 连接,然后将该连接传递给 MongoStore
:
const express = require('express');
const session = require('express-session');
const MongoStore = require('connect-mongo')(session);
const mongoose = require('mongoose');
const app = express();
// MongoDB 连接字符串
const mongoUri = 'mongodb://localhost:27017/mydatabase';
// 连接到 MongoDB
mongoose.connect(mongoUri, { useNewUrlParser: true, useUnifiedTopology: true })
.then(() => console.log('Connected to MongoDB'))
.catch(err => console.error('Failed to connect to MongoDB', err));
// 创建会话中间件
app.use(session({
secret: 'your-secret-key',
resave: false,
saveUninitialized: false,
store: new MongoStore({ mongooseConnection: mongoose.connection })
}));
// 其他中间件和路由定义...
app.listen(3000, () => {
console.log('Server is running on port 3000');
});
解释
- MongoDB 连接:首先,我们使用
mongoose
创建一个到 MongoDB 的连接。 - 会话中间件:接着,在创建
express-session
中间件时,我们将MongoStore
的实例作为store
参数传递。这里的关键是使用mongooseConnection
属性,它应该指向mongoose
的连接对象。
这样,你应该能够解决 Required MongoStore option
dbmissing
的错误。确保你的 mongoose
连接字符串和 secret
键是正确的。