zoukankan      html  css  js  c++  java
  • koa-session 持久化

    一、使用mongoose链接数据库

    'use strict';
    
    const mongoose = require('mongoose');
    const config = require('config-lite')({
        filename: 'default',
        config_basedir: __dirname,
        config_dir: 'config'
    });
    const chalk = require('chalk');
    
    mongoose.connect(config.url, { dbName: config.db, useNewUrlParser: true, autoIndex: false });
    
    
    const connect = mongoose.connection;
    
    connect.once('open', () => {
        console.log(
            chalk.green('connect db success!')
        );
    })
    
    connect.on('error', function (error) {
        console.error(
            chalk.red('Error in MongoDb connection: ' + error)
        );
        mongoose.disconnect();
    });
    
    connect.on('close', function () {
        console.log(
            chalk.red('the db is disconnect ,reconnect...')
        );
        mongoose.connect(config.url, { server: { autoReconnect: true } });
    });
    
    module.exports = connect;
    

     二、新建一个store.js文件

    const { Store } = require('koa-session2');
    module.exports = class extends Store {
        constructor(con) {
            super();
            this.collection = con.collection('sessions');
            console.log("session start ");
        }
        async get(sid) {
            return await this.collection.findOne({ sid });
        }
        async set(session, opts) {
            try {
                if (!opts.sid) {
                    opts.sid = this.getID(24);
                }
                await this.collection.findOneAndUpdate({ sid: opts.sid }, { $set: session }, { upsert: true });
            } catch (error) {
                console.log("error", error);
            }
            return opts.sid;
        }
        async destory(sid) {
            await this.collection.findAndModify({ sid }, [], {}, { removed: true });
        }
    }
    

      

    三、在app.js中

    const session = require("koa-session2");
    const sessionStore = require('./middlewares/seesionStore/store');
    app.use(session({
      key: config.session.key,
      maxAge: config.session.maxAge,
      domain: config.session.domain,
      store: new sessionStore(connect)
    }));
    

      

  • 相关阅读:
    PyQt5库结构
    PyQt5
    QObject
    os.listdir()
    os.getcwd()
    os.chdir()
    os.access()
    __name__
    php 学习笔记之关于时区的那点事
    php 学习笔记之搭建开发环境(mac版)
  • 原文地址:https://www.cnblogs.com/xiaosongJiang/p/10092376.html
Copyright © 2011-2022 走看看