2016-11-22 2 views
1

J'ai besoin de récupérer une liste de sessions de sessionStore (MongoStore) et de supprimer une session de connexion précédente. J'utilise express-session pour stocker des sessions dans DB.Récupérer la liste des sessions de sessionStore et détruire les sessions précédentes de l'utilisateur NodeJS

var userId = req.query.userid; 
    if (!userId) 
    return res.status(400).send({ 
     message: errorHandler.getErrorMessage('No user found in input request') 
    }); 

    var store = req.sessionStore; 
    var sessionsColl = store.db.collection('sessions'); 

    sessionsColl.find({ 
    'session.passport.user': userId, 
    '_id': { '$ne': req.sessionID } 
    }, function (err, userSessions) { 
    console.log(userSessions); 
    if (userSessions !== null && typeof userSessions._id !== 'undefined') { 
     store.destroy(userSessions._id, function (err, dat) { 
     console.log(dat); 
     });  
    } 
    }); 

Mais userSessions objet que je reçois un objet au lieu de la collecte et je ne pouvais pas comprendre comment puis-je récupérer la liste des sessions de userSessions objet

userSessions object response

Répondre

1

Enfin la peu je serais capable de résoudre le problème Voici mon code

exports.logoutFromPreviousDevices = function (req, res) { 
    var userId = req.query.userid; 
    if (!userId) 
    return res.status(400).send({ 
     message: errorHandler.getErrorMessage('No user found in input request') 
    }); 

    var store = req.sessionStore; 
    var sessionsColl = store.db.collection('sessions'); 

    sessionsColl.find({ 
    // 'session.passport.user': userId, 
    // we are tryin to remove all sessions, you can leave current 
    // '_id': { '$ne': req.sessionID } 
    }, function (err, userSessions) { 
    if (userSessions !== null) { 
     userSessions.toArray(function (a, sessionsData) { 
     sessionsData.forEach(function (element, index) { 
      var data = JSON.parse(element.session); 
      if (element._id !== req.sessionID && req.query.userid === data.passport.user) { 
      store.destroy(element._id, function (destroyerr, dat) { 
       if (destroyerr) 
       return res.status(400).send({ 
        message: errorHandler.getErrorMessage(destroyerr) 
       }); 
       res.jsonp({ status: 'Previous session deleted' }); 
      }); 
      } 
     }); 
     }); 
    } else { 
     res.jsonp({ status: 'No session found' }); 
    } 
    }); 
};