being tested
Add dynamic settings to your project which saved in sqlite db and available for update.
- dependency als-sqlite update to 0.5
- get method fixed
- global.sqlite = {Model}
- als-sqlite for saving updated to new version
- save and get bollean type
- not available as middleware
- settings data has to be function that getting curent settings state
- Now available
process.get
andprocess.set
- Unset by key
set(key)
- Create new key
set(key,value)
- if not exsists, creating new setting
- save json data
Syntax for initialization:
let getSettings = require('als-settings')
getSettings(settingsFn:function,restore:Boolean)
Parameters:
-
settingsFn - is a function which get curent settings state and has to return new settings state as object
- object can include objects and arrays
- restore - if true, restore settings with new state
After initialization, you can use the folowing:
process.settings.keyForSetting // getting setting by key
process.settings.get(key) // deliting setting by key
process.settings.set(key,value) // adding new setting or updating existing
let express = require('express')
let app = express()
let getSettings = require('als-settings')
let dev = true
//restore false by default
getSettings(function(settings) {
let secret = settings.secret ? settings.secret : require('crypto').randomBytes(64).toString('hex')
return {
site_name:'test',
roles: ['dev','admin','editor','user','subscriber','commentor'],
secret,
}
},dev)
app.get('/set/:site_name',(req,res) => {
req.settings.set('site_name',req.params.site_name) // setting new value to key and update process.settings
})
app.get('/use',(req,res) => {
// getting value
return res.end(`<div>${process.settings.site_name}</div>`)
})
app.get('/refresh',(req,res) => {
req.settings.get('key','value') // updating process.settings from db
return res.end('done')
})
app.listen(3000)
You can use sqlite db with als-sqlite which available as global.sqlite.Model
.
The Model allready connected to db and has all existing models inside global.sqlite.Model.models
.
Read more in https://www.npmjs.com/package/als-sqlite