snapmongo

0.2.3 • Public • Published

snapmongo

Build Status

An air-backend (db-less) solution using static json snapshot files. Inspired by Minimongo of Meteor.

CAUTION!: This package is yet experimental.

Preface

Snapmongo provides remote storage just using static json files. Provides a list and documents like Minimongo does. Howerver, it is not automatically refreshed but more static and public since it is served by just json files. Basically it is not authenticated but still http server side authentication could be done. It can be used in dynamic page generating static blogs as a pseudo back-end.

Snapmongo는 스태틱 파일을 이용한 원격 스토리지를 제공함. Minimongo처럼 list 와 document 를 제공하지만, 자동으로 갱신되진 않음. 기본적으로 file 이기 때문에 인증은 없지만 웹서버 차원의 인증은 가능할 것임. 의사 backend 로써 static blog라도 동적 페이지를 생성할 수 있음.

Snapmongoはスタティックファイルを用いてリモートストレージを提供する。 Minimongoのようにリストとドキュメントなどを提供するが、自動では更新されない。 基本的にファイルを使うため、認証されないが、ウェブサーバー上の認証を使えるはず。 疑似バックエンドとして静的ブログでも動的ページが生成できる。

Todos

  • Add client side data overriding which is like modifying.
  • Add generating snapshots as json files to update the source json files.
  • Add query support in find.
  • Add local storage caching with lscache.

Usage

  • npm install snapmongo
  • import Snapmongo from 'snapmongo'
  • Snapmongo.config({ base: '/assets/json/', ext: '.json' });
  • const blogs = new Snapmongo('blogs');
  • blogs.find().then(list => console.log(list, list.total));
  • blogs.findOne(1).then(item => console.log(item));

Sample Json

Single index.json file

/assets/json/blogs/index.json

{
  "meta": {
    "total": 2,
    "fields": [ "title", "preview", "creationTime" ],
    "detailFields": [ "markDown" ]
  },
  "list": {
    "2": {
      "title": "Hello2",
      "preview": "The second blog Hi there",
      "creationTime": 1500077896308
    },
    "1": {
      "title": "Hello1",
      "preview": "The first blog Hi there",
      "creationTime": 1500027896308
    }
  } 
  "details": {
    "2": {
      "markDown": "## The second blog data\nNothing here"
    },
    "1": {
      "markDown": "## The first blog\n Hi there, this is the first article.\nSee you next time."
    }
  } 
}

Multiple files

/assets/json/blogs/index.json

{
  "meta": {
    "total": 4,
    "nextList": "list1501765968589",
    "fields": [ "title", "preview", "creationTime" ],
    "detailFields": [ "markDown" ]
  },
  "list": {
    "4": {
      "_detal": "",
      "title": "Hello",
      "preview": "The fourth blog Hi there",
      "creationTime": 1500197896308
    },
    "3": {
      "_detal": "",
      "title": "Hello",
      "preview": "The third blog Hi there",
      "creationTime": 1500097896308
    }
  },
  "details": {
    "4": {
      "markDown": "## The fourth blog data\nNothing here"
    },
    "3": {
      "markDown": "## The third blog\n Hi there, this is the first article.\nSee you next time."
    }
  }
}

/assets/json/blogs/list1501765968589.json

{
  "meta": {
  },
  "list": {
    "2": {
      "_detal": "detail1501765968589",
      "title": "Hello2",
      "preview": "The second blog Hi there",
      "creationTime": 1500077896308
    },
    "1": {
      "_detal": "detail1501765968589",
      "title": "Hello1",
      "preview": "The first blog Hi there",
      "creationTime": 1500027896308
    }
  }
}

/assets/json/blogs/detail1501765968589.json

{
  "meta": {
  },
  "details": {
    "2": {
      "markDown": "## The second blog data\nNothing here"
    },
    "1": {
      "markDown": "## The first blog\n Hi there, this is the first article.\nSee you next time."
    }
  }
} 

Milestone

  • Support multiple remotes and make overrides applicable to remote also

Environment

node v4 or higher

History

2017-12-24

updated to v0.2.3 Has an upate on the local storage sttructure. snap:overrides:lists will be updated snap:overrides:list with stripping [] to become an object.

2017-11-01

Updated to v0.2.2 Addd lscache to cache

2017-09-03

Updated to v0.2.1 Supports insert/update/dump

2017-08-06

Updated to v0.1.0

Has some breaking changes. Does not use callbacks any more. Just have created documentation;) Please let me know if any hassles arround this changes.

2016-06-??

initial release

Demo

The author writing a blog with Snapmongo. Please have a look if you are interested.

Dependency

lodash

Package Sidebar

Install

npm i snapmongo

Weekly Downloads

0

Version

0.2.3

License

ISC

Last publish

Collaborators

  • rcomponents