Skip to main content

Create a Store

Initial Store

Invoke nestore with an object with any keys/values to setup the initial state.

myStore.js
import nestore from 'nestore'

const nst = nestore({
logged_in: false,
user_name: null,
time: Date.now(),
1: 'Two',
})

export default nst

Mutators

You can also register 'in-store' mutators to keep logic and state in a central location.

const nst = nestore({
error: null,
logged_in: false,
user_name: null,
time: Date.now(),

getTime: () => Date.now(),
setTime: (NST) => NST.set('time', Date.now()),
customTime: (NST, args) => NST.set('time', args[0]),

login: async (NST, [name, pwrd]) => {
let user = await Users.findOne({ where: { user_name: name }})

if(!user){
NST.set('error', 'No user found...')
return false
}

NST.store.user_name = user.user_name
NST.store.logged_in = true

return user
}

})

Nestore will expose these functions for use outside the store

import nst from  './myStore.js'

const user = await nst.login('AliceAware11', 'password1234')
// await nst.login('AliceAware11', 'password1234')
// nst.login('AliceAware11', 'password1234')

Listeners

Listeners can also be registered directly in the store with the $ prefix. All listeners are invoked with an object containing the path and key of the value that changed, as well as the new value.

const nst = nestore({
logged_in: false,
user_name: null,

login: async (NST, [name, pwrd]) => {
// ...
},

$user_name: ({ value }) => {
console.log(`The user ${value} has logged in!`)
},

})