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
Post a Comment