Q3
  • Introduction
  • Related Projects
  • Roadmap
  • API
    • Core
      • Rest
      • Session
      • Schema plugins
    • Schemas
      • Rates
      • Rebates
      • Permissions
    • Utils
      • Subdocuments
      • Soft deleting
  • Client
    • gatsby-theme-q3
    • q3-components
      • Quantity
    • q3-ui-cart
      • Drawer
    • Admin
      • Builders
      • Containers
        • Contexts
    • Datatables
      • TableBadge
    • Forms
      • Field
      • Presets
        • <PasswordChange />
    • Repeater
    • UI
      • CallToAction
      • Avatar
      • CollapsiblePanel
      • SubMenu
Powered by GitBook
On this page

Was this helpful?

  1. API
  2. Core

Session

Custom global state that persists throughout a request's life cycle

yarn add q3-core-session

The session package appears in several places throughout Q3. Most notably, it configures middleware in q3-core-composer for assigning USER to the namespace. Similarly, it registers a global mongoose plugin in q3-api that appends a __$q3 property inside both pre and post schema hooks.

Method

Parameters

Returns

Description

get

String, String, Mixed

Mixed

Get a single value from the context. It works a lot like Lodash's get, so you can query for nested paths and set default return values.

set

String, Mixed

Undefined

Set a single value in the context

nx

String, Mixed/Promise

Mixed

Get or set a value depending on if its exists in the context

getAll

--

Object

Get all values from the context

kill

--

Undefined

Clear all values from the context

intercept

String, Function

Undefined

Dynamically set a value in the context (callback receives the request object)

Example

The example below illustrates how to query the context from within functions outside the scope of your controllers.

const { get, intercept } = require('q3-core-session');
const { getPriceIn } = require('../utils'); 

/**
 * This function executes inside express.
 * It is the last call before the controller.
 */
intercept('CURRENCY', (req) => {
    return req.headers['x-display'];
});

/**
 * This function queries a key set in the intercept callback.
 */
exports.convertPriceToLocalCurrency = async () => {
    const currency = get('CURRENCY');
    return getPriceIn(currency);
};

PreviousRestNextSchema plugins

Last updated 5 years ago

Was this helpful?