lowdb-s3-adapter
TypeScript icon, indicating that this package has built-in type declarations

1.0.12 • Public • Published

lowdb-s3-adapter

Lowdb adapter that uses AWS S3 as a store.

Note: you must independently install aws-sdk and lowdb.

npm i lowdb aws-sdk lowdb-s3-adapter --save

Usage

let Adapter = require('lowdb-s3-adapter')
let adapter = new Adapter(params, AwsConfig, lowdbOpts)

Arguments

params (required)

  • S3 bucket name, key (file), tags, etc.
  • Arguments are passed to s3.upload()
  • use camel case ('bucket' instead of 'Bucket', 'key' instead of 'Key', etc.)
  • default = {}

Example

let params = {
  bucket: 'stackerror',
  key: 'data.json'
}

AwsConfig (optional)

  • passed to AWS constructor
  • here's what's happening under the hood: let s3 = new AWS.S3(AwsConfig)
  • default: { region: 'us-east-1' }

Example let AwsConfig = { region: 'us-east-2' }

lowdbOpts (optional)

  • defaults to:
 default = { 
   defaultValue = {}, 
   serialize = obj => JSON.stringify(obj, null, 2),
   deserialize = JSON.parse 
 }

Examples

const Adapter = require('lowdb-s3-adapter')
const low = require('lowdb')
 
let adapter = new Adapter(
  { bucket: 'stackerror', key: 'data.json' },
  { region: 'us-east-1' }
)
 
async function init() {
  // low(adapter) must be awaited because calling low() performs an initial read
  let db = await low(adapter)
 
  db.defaults({ posts: [], user: {} })
    .write()
 
  db.get('posts')
    .push({ id: 1, title: 'lowdb is awesome'})
    .write()
 
  db.set('user.name', 'typicode')
    .write()
 
  let state = db.get('posts').value()
 
  console.log(state)
  // => [ { id: 1, title: 'lowdb is awesome' } ]
}
 
init()

Readme

Keywords

none

Package Sidebar

Install

npm i lowdb-s3-adapter

Weekly Downloads

1

Version

1.0.12

License

ISC

Last publish

Collaborators

  • menubar
  • focuswish