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
var flatty = require("flatty");
var Store = require("flatty/stores/native");
var pokemons = new flatty("./pokemons.db", {
interval: 50, // In ms
store: new Store()
});
Options:
id
(if omitted, random id will be generated)data
- valid JSON datacallback
- Obvious
Example:
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)
});
Options:
id
(if omitted, will return all records)callback(results)
- Again, callback!typeof results === (id === undefined) ? "array" : "object"
Example:
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"}
});
Options:
id
- ID of the recordcallback
- OH, THAT!
Example:
pokemon.delete("AFgzoWk7qAWFMd3f", function() {
//Deleted record!
});
Options:
id
- ID of the recordcallback
- SUCH CALLBACK!
Example:
pokemon.update("AFgzoWk7qAWFMd3f", {pokedex_id: 479}, function() {
//Updated!
});
Options:
search
- valid JSON objectcallback(results)
- CALLBACK WOW!typeof results === "array"
Example:
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
});
Options:
key
- option nameval
- options value
Example:
pokemon.option("index", true);
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 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.