Я использую express-session и connect-mongo для работы с пользовательскими сессиями.
Мне нужно выяснить, как искать базу данных сессий для конкретногоПользователь и обновить его.
Я пытался выполнить запрос к базе данных с поддельной схемой и смог ее найти, но при попытке сохранить выдает ошибку, сообщающую, что идентификатор не совпадает, но также и при попытке войти в систему.Идентификатор из возвращенного документа, он не определен.
ОШИБКА:
Cast to ObjectId failed for value "reWCaAVbumSCW9P6g2qE705Cj6jz0qpD" at path "_id" for model "sessions"
КОД:
var mongoose = require('mongoose');
var Schema = mongoose.Schema;
const SessionSchema = new Schema({}, { strict: false });
const Session = mongoose.model('sessions', SessionSchema, 'sessions');
module.exports = function (userId, callback) {
console.log('finding session for',userId);
Session.findOne({session: {$regex: userId}},(err, session)=>{
if (err) return callback(err);
if (!session) return callback('user session not found');
//parse session
var sessionJson = JSON.parse(session['_doc'].session);
//add reset flag
sessionJson.passport.user.resetSession = true;
//save back to document
session['_doc'].session = JSON.stringify(sessionJson);
//save session to database
session.save((err, savedSession)=>{
if (err) return callback(err);
//success
return callback(null);
});
});
};
Может кто-нибудь выяснить, почему поле _id имеетпроблемы, или укажете мне лучший способ редактирования сессий?Примечание: это не редактирование сеанса вошедшего в систему пользователя, но для любого пользователя.