• 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)
    }));
    

      

  • 相关阅读:
    xtrabackup原理1
    mydumper原理3
    mydumper原理1
    mydumper原理2
    MYSQL数据库管理之权限管理
    percona-toolkit工具包的使用教程
    Percona-Galera-Monitoring-Template监控模板说明
    mysql优化--博森瑞
    percona-toolkit -1
    innobackupex --slave-info参数的含义和适用场景
  • 原文地址:https://www.cnblogs.com/xiaosongJiang/p/10092376.html
Copyright © 2020-2023  润新知