GeoStore Data Stores
Data stores are the foundation of the GeoStore. They are key/value
storage devices that allow for creating entries, updating, deleting, and retrieving single Feature
objects in GeoJSON.
Data Stores are designed to be asyncronous, using Node.js style callbacks. In syncronough stores, like Terraformer.Store.Memory
and Terraformer.Store.LocalStorage
callbacks are executed immediately, but in truly asyncronous stores they behave as expected.
Link Existing Data Stores Back to Top
There are a couple of existing Data Stores that help you get started storing data immediately.
- LocalStorage - works in the browser only
- Memory - works in both the browser and Node.js
- LevelDB - works in Node.js
Link Writing a DataStore Back to Top
Since Data Stores are simply key/value
stores, it is very easy to write additional Data Stores as long as the method signatures are correct.
Link Methods Back to Top
Link new DataStore() Back to Top
Instantiating a DataStore
should return a new object containing method signatures conforming to the DataStore
interface.
You can pass any needed arguments while instantiating.
Example:
var ds = new DataStore({
"path": "some_path",
"username": "me",
"password": "mypass"
});
Link DataStore.add(geostore, callback) Back to Top
Add a geojson
object to a DataStore. In the case of a Feature
, the id
should be used as the primary key for storage and retrieval:
// get the id
var id = geojson.id;
// store the data
this.magicdb.put(geojson.id, JSON.stringify(geojson));
If a FeatureCollection
is passed in instead, each Feature
inside of the FeatureCollection
needs to be added before the callback
is called.
Option | Value | Description |
---|---|---|
GeoJSON |
object |
Must be either a Feature or FeatureCollection and contain an id |
callback | function |
Callback to be fired when the add has been completed |
Example:
ds.add(geojson, function (err, res) {
// Node.js style callback
});
Link DataStore.update(geostore, callback) Back to Top
Update a geojson
object already in a DataStore. Only a Feature
should be able to be updated, the id
should be used as the primary key for update:
Option | Value | Description |
---|---|---|
GeoJSON |
object |
Must be a Feature and contain an id |
callback | function |
Callback to be fired when the update has been completed |
Example:
ds.update(geojson, function (err, res) {
// Node.js style callback
});
Link DataStore.remove(id, callback) Back to Top
Remove a geojson
object from the DataStore by id
.
Option | Value | Description |
---|---|---|
id | String or Number |
The id of the Feature to be removed |
callback | function |
Callback to be fired when the remove has been completed |
Example:
ds.remove(id, function (err, res) {
// Node.js style callback
});
Link DataStore.get(id, callback) Back to Top
Retrieves a geojson
object from the DataStore by id
.
Option | Value | Description |
---|---|---|
id | String or Number |
The id of the Feature to be retrieved |
callback | function |
Callback to be fired when the remove has been completed |
Example:
ds.get(id, function (err, res) {
// Node.js style callback
});