博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
koa-session 持久化
阅读量:6167 次
发布时间:2019-06-21

本文共 1883 字,大约阅读时间需要 6 分钟。

一、使用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)}));

  

 

转载于:https://www.cnblogs.com/xiaosongJiang/p/10092376.html

你可能感兴趣的文章
Linux IPC实践(3) --具名FIFO
查看>>
从Atlas到Microsoft ASP.NET AJAX(6) - Networking, Application Services
查看>>
成长之路---写好一个类
查看>>
读取 java.nio.ByteBuffer 中的字符串(String) 写入方式flash.utils.ByteArray.writeUTF
查看>>
范围管理和范围蔓延
查看>>
android90 bind方式启动服务service调用service里的方法
查看>>
前端开发薪资之各地区对比(图文分析)(share)
查看>>
对做“互联网产品”的一些想法
查看>>
SPI协议及其工作原理浅析【转】
查看>>
原生js编写的安全色拾色器
查看>>
iOS:VFL语言
查看>>
让时间处理简单化 【第三方扩展类库org.apache.commons.lang.time】
查看>>
用scikit-learn学习DBSCAN聚类
查看>>
Linux设备模型(热插拔、mdev 与 firmware)【转】
查看>>
Android开发笔记第二篇(Android 手机概念)
查看>>
js隐藏与显示回到顶部按钮
查看>>
hdu4496 D-City(扭转和支票托收啊 )
查看>>
数据挖掘 | 数据理解和预处理
查看>>
关于大数据你必须了解的几个关键词!
查看>>
在Kali Linux中更改GRUB2背景的5种方式
查看>>