https://github.com/jutaz/flatty
A flat-file in-memory database, built for node.js
https://github.com/jutaz/flatty
Last synced: 6 months ago
JSON representation
A flat-file in-memory database, built for node.js
- Host: GitHub
- URL: https://github.com/jutaz/flatty
- Owner: jutaz
- Created: 2014-04-02T16:48:03.000Z (about 11 years ago)
- Default Branch: master
- Last Pushed: 2016-09-22T10:40:34.000Z (over 8 years ago)
- Last Synced: 2024-10-11T15:08:39.785Z (7 months ago)
- Language: JavaScript
- Size: 398 KB
- Stars: 5
- Watchers: 2
- Forks: 2
- Open Issues: 1
-
Metadata Files:
- Readme: Readme.md
Awesome Lists containing this project
README
# Flatty
This library was build for quickly testing API using local DB. Also can be used as non-failing, always reachable DB used for presentations (This is why it was created).
This module is small ~300 LOC.> Be warned, that it is not stable and API is subject to change.
install: ```npm install flatty```
## API
```javascript
var flatty = require("flatty");
var Store = require("flatty/stores/native");var pokemons = new flatty("./pokemons.db", {
interval: 50, // In ms
store: new Store()
});
```
### Methods#### set([id], data, callback)
Options:
* ```id``` (if omitted, random id will be generated)
* ```data``` - valid JSON data
* ```callback``` - ObviousExample:
```javascript
pokemons.set({name: "Lapras", type: "ice"}, function(id) {
console.log(id) // Some random string (qFbzoWk7qyWFMW0u)
});
pokemons.set("AFgzoWk7qAWFMd3f", {name: "Rotom", type: "ghost"}, function(id) {
console.log(id) // Some random string (qFbzoWk7qyWFMW0u)
});
```
#### get([id], callback)Options:
* ```id``` (if omitted, will return all records)
* ```callback(results)``` - Again, callback! ```typeof results === (id === undefined) ? "array" : "object"```Example:
```javascript
pokemons.get(function(pokemons) {
console.log(pokemons) // [{name: "Lapras", type: "ice", id: "qFbzoWk7qyWFMW0u"},{name: "Rotom", type: "ghost", id: "AFgzoWk7qAWFMd3f"}]
});pokemons.get("qFbzoWk7qyWFMW0u", function(pokemon) {
console.log(pokemon) // {name: "Lapras", type: "ice", id: "qFbzoWk7qyWFMW0u"}
});
```#### delete(id, callback)
Options:
* ```id``` - ID of the record
* ```callback``` - OH, THAT!Example:
```javascript
pokemon.delete("AFgzoWk7qAWFMd3f", function() {
//Deleted record!
});
```#### update(id, data, callback)
Options:
* ```id``` - ID of the record
* ```callback``` - SUCH CALLBACK!Example:
```javascript
pokemon.update("AFgzoWk7qAWFMd3f", {pokedex_id: 479}, function() {
//Updated!
});
```#### find(search, callback)
Options:
* ```search``` - valid JSON object
* ```callback(results)``` - CALLBACK WOW! ```typeof results === "array"```Example:
```javascript
pokemon.find({pokedex_id: 479}, function(results) {
console.log(results) // [{name: "Rotom", type: "ghost", id: "AFgzoWk7qAWFMd3f"}]
});pokemon.find({pokedex_id: 479, name: "Lapras"}, function(results) {
console.log(results) // null
});
```#### option(key, val)
Options:
* ```key``` - option name
* ```val``` - options valueExample:
```javascript
pokemon.option("index", true);
```### Events
`record:set` - callback: `fn(key)`. Key is id of record.
`record:update` - callback: `fn(key)`. Key is id of record.
`record:delete` - callback: `fn(key)`. Key is id of record.`option:change` - Emitted when option has changed.
### Ticker
Ticker is a function, that saves data to disk at certain interval. Data format is JSON or native format, which looks like `ID\t{data: "stuff"}\n`, so it\`s highly editable and readable.
Currently interval is set to ```50ms```. But dont worry! It will not flood your drive, because it will write only if changes were made.