'Manually destroy specific express session from connect-mongo

is there any possible method for me to delete specific session from mongoDB?

My scenario is to allow 'myself' to delete specific session from DB (other user session). Reading from connect-mongo docs, I can use destory but looks like this method is to destroy my own session (req.session.destroy()). Is there a way for me to achived this?

something like

const expressSession = require('express-session')
const MongoStore = require('connect-mongo');


MongoStore.destroy('some random user session id')

My config: Express + express-session with connect-mongo + mongoDB



Solution 1:[1]

I am trying to do something similar. During testing, I want to be able to clear all session. I sort of have this working.

My approach is just to reach into the sessions collections and delete all documents.

async clearSessions (req,res,next) {
    const uri = getDbConnectionString()
    const client = new MongoClient(uri,{ useNewUrlParser: true, useUnifiedTopology: true });
    try {
        await req.session.destroy();
        await client.connect();
        const sessions_result=  await client.db(`${process.env.DBNAMEDEV}`).collection("sessions").deleteMany({});
       // console.log(sessions_result)
       await client.close();
       res.send("cleared")

       return
    } catch (e) {
        console.error(e);

    }
    res.send("failed")
}

This code is called via the route /api/setup/clearsessions. *PREVIOUSLY this was the case: The code works, but then connect-mongo throws and error saying "Error: unable to find the session to touch". However, the error thrown by connect-mongo does not cause problems

I fixed the errors by adding await req.session.destroy();.

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1 Tyler2P