猫鼬:如何访问会话模型?

时间:2020-08-23 03:20:43

标签: node.js express mongoose express-session connect-mongo

我使用 express-session 包来处理 express 中的会话。我将 mongoose connect-mongo 用于 express-session 存储,将会话存储在mongodb中。

express-session 创建的会话到期时,我试图从集合中删除某些项目。通常,如果我自己创建此模型,则将使用类似以下内容的

// Init schema
const schema = new Schema({<schema fields>});

// Add .pre hook
schema.pre('remove', function pre(cb) {
    this.model('<Some items linked to this model>').remove({ <some association field>: this._id }, cb);
});

// Create model from schema
export const Model = model('ModelName', schema);

现在,当记录被删除时(我假设记录已过期),我也可以删除所有链接的项目。

问题是我不知道如何访问 express-session connect-mongo 创建的架构/模型,以向该“会话”架构/模型。

这是我的第一个项目,使用 mongoose express-sessions 进行会话,因此我不确定如何首先创建会话模型并将其提供给mongodb ,但建立mongo连接后,我可以在数据库(cloud.mongodb.com)中看到“会话”集合,因此我假设在某个时候,“会话”模型是由 express-session 创建的或 connect-mongo ,但我找不到如何访问它的方法,以向其中添加一些挂钩。

奇怪的是,如果我尝试在初始化之后(以及在创建第一个会话之后)很长时间查看猫鼬中所有定义的模型,例如:console.log(mongoose.models);我只能看到由我定义的模型,但看不到“显示会话”模型。

编辑:我可以通过创建一些作业来解决此问题,该作业可以通过遍历每一项来删除没有现有链接的所有记录,但是考虑到猫鼬中有可用的钩子,我认为这不是最佳方法

0 个答案:

没有答案