why I am getting mongo connection error when trying to implement express - sessions

15 views Asked by At

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;
    }
}
0

There are 0 answers