1

尝试在 MongoDB 上保存会话时出现错误

const MongoStore = require('connect-mongo');

const connectDB = require('./config/db');
const { connection } = require('mongoose');
    app.use(
      session({
        secret: 'some secret',
        resave: false,
        saveUninitialized: true,
        store: MongoStore.create({
          client: connection,
        }),
        cookie: {
          maxAge: 1000 * 60 * 60 * 24,
        },
      })
    );

错误:

C:\Users\Tezz\Desktop\Express\PassportJsAuth\express-session-authenticator\node_modules\connect-mongo\build\main\lib\MongoStore.js:126 .db(options.dbName) ^

TypeError: con.db is not a function at C:\Users\Tezz\Desktop\Express\PassportJsAuth\express-session-authenticator\node_modules\connect-mongo\build\main\lib\MongoStore.js:126:18

4

1 回答 1

0

这是解决方案:

const express = require('express');
const session = require('express-session');
require('dotenv').config();

const MongoStore = require('connect-mongo');

const connectDB = require('./config/db');

const PORT = process.env.PORT || 3001;
const MONGO_URI = process.env.MONGODB;
const app = express();


//connectDB should return the client conn.connection.getClient();

const client = connectDB().then((mClient) => {
app.listen(PORT, () => console.log('Server running...');
return mClient;
}).catch(err => console.log(err));


app.use(express.json());
app.use(express.urlencoded({ extended: true}));
app.use(
  session({
    secret: 'some-secret',
    resave: false,
    saveUninitialized: true,
    store: MongoStore.create({
      client,
    }),
  })
);

app.get('/', (req, res, next) => {
  res.send('<h1>Hello World (sessions)</h1>');
});

```
于 2021-08-21T04:02:42.240 回答