I am using typescript, MongoDB database, and express JS. I am trying to implement the express session. I am using connect-mongo to store my session.
This is the error am getting: const timeoutError = new MongoServerSelectionError( ^ MongoServerSelectionError: connect ETIMEDOUT 3.7.171.203:27017, connect ENETUNREACH 64:ff9b::307:abcb:27017 at EventTarget.<anonymou
I have already implemented the sign-up part. The challenge is when trying to implement the login sessions. from the database, I have already the sessions and users but I get the error.
app.ts
import "dotenv/config";
import express, { NextFunction, Request, Response } from "express";
import noteRoutes from "./routes/note";
import userRoutes from "./routes/users";
import morgan from "morgan";
import createHttpError, { isHttpError } from "http-errors";
import session from "express-session";
import env from "./utils/validateEnv"
import MongoStore from "connect-mongo";
const app = express();
app.use(morgan("dev"));
app.use(express.json());
app.use(session({
secret: env.SESSION_SECRET,
resave: false,
saveUninitialized: false,
cookie: {
maxAge: 1000 * 60 * 60,
},
rolling: true,
store: MongoStore.create({
mongoUrl: env.MONGO_CONNECTION_STRING
}),
}));
app.use("/api/users", userRoutes);
app.use("/api/notes", noteRoutes);
app.use((req, res, next)=>{
next(createHttpError(404, "Endpoint not Found"));
});
//handling error endpoint
// eslint-disable-next-line @typescript-eslint/no-unused-vars
app.use((error: unknown, req: Request, res: Response, next: NextFunction)=>{
console.error(error);
let errorMessage = "An unknown error occurred"
let statusCode = 500;
if(isHttpError(error)){
statusCode = error.status;
errorMessage = error.message;
}
res.status(statusCode).json({error: errorMessage});
});
export default app;
session.d.ts
import mongoose from "mongoose";
declare module "express-session"{
interface SessionData {
userId: mongoose.Types.ObjectId;
}
}