Session with mongodb storage in express js

 1. app.js

import express from 'express'
import web from './routes/web.js'
import session from 'express-session'
import connectDb from './db/connectdb.js'
import MongoStore from 'connect-mongo'
const app = express()
const port = process.env.PORT || '3000'

const Database_Url = process.env.Database_Url || "mongodb://localhost:27017"

connectDb(Database_Url)

//Mongo DB Session.
const sessionStore = MongoStore.create({
    mongoUrl:Database_Url,
    dbName:"school22",
    collectionName:'sessions',
    ttl:14*24*60*60, //session time
    autoNative: 'native'


})


//session
app.use(session({
    name:'SessionGreek',
    secret:'Iamkey',
    resave:false,
    saveUninitialized:true,
    cookie:{maxAge:20000},
    store:sessionStore

}))

//load routes
app.use('/',web)

app.listen(port,()=>{
    console.log('Server Connected Successfully.')
})


2. Controllers/studentContollers.js


class studentController {
   
  //make sesion count
  static session_example = (req, res) => {
    //set device and use in another function ..
    req.session.device = "mobile";
    if (req.session.count) {
      req.session.count++;
    } else {
      req.session.count = 1;
    }
    res.send(`count: ${req.session.count}`);
  };

  static get_session_data = (req, res) => {
    if (req.session.device) {
      res.send(
        `device: ${req.session.device} and count: ${req.session.count} `
      );
    } else {
      console.log("not find device..");
    }
  };
}

export default studentController;


3.db/connectdb.js


import mongoose from "mongoose"

const connectDb = async (Database_Url) => {  
    try{
        const DB_OPTIONS = {
            dbname: 'school22' ,
        }

        await mongoose.connect(Database_Url,DB_OPTIONS)
        console.log('Connected Successfully...')
    }
    catch(err){
       console.log('err')
    }
}

export default connectDb


4.routes/web.js


import express from 'express'
const router = express.Router()

import studentController from '../controllers/studentController.js'

router.get('/getsessioncount',studentController.session_example)
router.get('/getsessiondata',studentController.get_session_data)

export default router

Comments

Popular posts from this blog

Interview question laravel.

My Sql Query ..