Я пытаюсь сохранить свои express -сессии на cloud.mongodb через существующее соединение с mon goose. Проблема в том, что когда я передаю mongoose.connection
в качестве параметра подключения к new MongoStore({mongooseConnection:mongoose.connection})
, я получаю следующую ошибку:
const Store = connect.Store || connect.session.Store
^
TypeError: Cannot read property 'Store' of undefined
Я видел возможные решения, но похоже, что у всех такая же конфигурация, как у меня, и до сих пор работает. Мне было интересно, если тот факт, что соединение с базой данных происходит медленнее, чем локальное, и, возможно, сначала достигает new Mongostore()
, чем установление соединения.
Вот некоторые из моего кода для справки.
mongoose.connect(`mongodb+srv://${process.env.MONGO_USERNAME}:${process.env.MONGO_PASSWORD}@cluster0-kdrae.mongodb.net/${process.env.MONGO_DATABASE}?retryWrites=true&w=majority`,{useNewUrlParser:true,useUnifiedTopology:true});
app.use(logger('dev'));
app.use(express.json());
app.use(express.urlencoded({ extended: false }));
app.use(cookieParser());
app.use(express.static(path.join(__dirname, 'public')));
app.use(expressSession({
secret:process.env.EXPRESS_SESSION_SECRET,
store: new MongoStore({///Here I get the suggestion from the IDE
mongooseConnection:mongoose.connection
}),
resave:false,
saveUninitialized:true,
secure:true
}));
app.use(passport.initialize(undefined));
app.use(passport.session(undefined));
app.use(flash());
Я также получил предложение от IDE, которое я выделил в коде, который гласит: Argument type {mongooseConnection} is not assignable to parameter type (options?: session.SessionOptions) => express.RequestHandler