【问题标题】:What to put in get/set/destroy methods on koa-session DB instance?在 koa-session 数据库实例上添加什么 get/set/destroy 方法?
【发布时间】:2018-08-27 02:54:08
【问题描述】:

我正在尝试将我的 Koa 应用程序的会话存储在 mongo DB 服务器上。

我不太明白这部分文档的工作原理: https://github.com/koajs/session/blob/master/Readme.md#external-session-stores

它说我们必须向我们的数据库实例添加三个方法(get/set/destroy)。就我而言,我不知道在这些函数中添加什么。

有人会帮助我吗?至少对于 get()

谢谢!

【问题讨论】:

    标签: javascript node.js mongodb express koa


    【解决方案1】:

    作为参考,您可以查看这个使用 RethinkDB 的会话存储。

    export function getRethinkSessionStore (dbConn, tableName = 'session') {
      return {
        // Get session object by key.
        get: (key, ageMax, { rolling }) => 
          r.table(tableName).get(key)('session')
            .run(dbConn)
            .catch(err => null),
    
        // Set session object for key, with a maxAge (in ms).
        set: (key, session, maxAge, { rolling, changed }) =>
          r.table(tableName).insert({id: key, maxAge, session}, {conflict: 'replace'})
            .run(dbConn)
            .catch(err => {}),
    
        // Destroy session for key.
        destroy: key => 
          r.table(tableName).delete(key)
            .run(dbConn)
            .catch(err => {})
      }
    }
    

    【讨论】:

    • 谢谢!这确实是我的想法:)。我已经使用 MongoDB 在没有 ORM 的情况下实现了这一点。但是我现在想知道如何从上下文中调用这些方法(如果我手动调用它们就可以了)。 ctx.session 为空。
    • 我使用了一个名为“koa-session”的中间件:import session from 'koa-session',然后是app.use(session({store: getRethinkSessionStore(dbConn)}, app))
    猜你喜欢
    • 1970-01-01
    • 2023-03-26
    • 2011-12-11
    • 1970-01-01
    • 1970-01-01
    • 2011-01-09
    • 2020-11-07
    • 2014-12-11
    • 1970-01-01
    相关资源
    最近更新 更多