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


6 回复

Node.js 基础开发新建项目报错 throw new Error('Required MongoStore optiondbmissing')

问题描述

在使用 Node.js 进行开发时,尝试连接 MongoDB 数据库过程中遇到了一个错误:throw new Error('Required MongoStore optiondbmissing')。这个问题通常出现在使用 connect-mongo 插件来管理 session 时。

解决方案

这个错误提示表明在配置 MongoStore 时,缺少了一个必需的选项 dbdb 选项是用来指定 MongoDB 的数据库实例的。

下面是解决此问题的步骤及示例代码:

  1. 安装必要的依赖: 确保你已经安装了 express-sessionconnect-mongo,如果没有安装可以使用以下命令:

    npm install express-session connect-mongo
    
  2. 正确配置 MongoStore: 在你的应用启动文件(如 app.jsserver.js)中,确保你在创建 MongoStore 实例时正确地传入了 db 参数。假设你已经有了一个 MongoDB 客户端实例 mongoosemongodb

    示例代码:

    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 optiondbmissing 的错误。


为什么没有人回答、、、泪泪泪

调试参数有缺少, 把代码贴了看吧

他这个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');
});

解释

  1. MongoDB 连接:首先,我们使用 mongoose 创建一个到 MongoDB 的连接。
  2. 会话中间件:接着,在创建 express-session 中间件时,我们将 MongoStore 的实例作为 store 参数传递。这里的关键是使用 mongooseConnection 属性,它应该指向 mongoose 的连接对象。

这样,你应该能够解决 Required MongoStore optiondbmissing 的错误。确保你的 mongoose 连接字符串和 secret 键是正确的。

回到顶部