Mit persistence.js lässt sich eine lokale Datenbank mit Javascript erstellen ohne einen Datenbank-Server und eine Internet Verbindung.
Unterstütze mobile OS von persistence.js:
- Android Browser (getestet auf 1.6 und 2.x)
- iPhone Browser (iPhone OS 3+)
- Moderne Webkit Browser (Google Chrome und Safari)
- Firefox (über Google Gears oder In-Memory Database und LocalStorage Fallback)
- Opera
- Palm WebOS (getestet auf 1.4.0)
Download des Projektes: github
Hier eine Beispiel Klasse für die Verwendung von persistence.js
function ItemDatabase() {
this.Item;
this.setUpDatabase = function()
{
console.log("setup DB");
//this.dropTables();
//3MB DB size
persistence.store.websql.config(persistence, 'items1',
'Item DB', 3 * 1024 * 1024);
persistence.debug = true;
//id ist automatisch generiert!
this.Item = persistence.define('Item', {
imageUrl: "TEXT",
title: "TEXT",
lat: "INT",
long: "INT",
state: "TEXT"
});
//TODO: delete DB for testing
//persistence.reset(function(){
persistence.schemaSync(function(){
});
}
this.dropTables = function ()
{
persistence.reset(function() {
console.log("Reset!");
});
}
this.getItemByItemID = function(itemID)
{
console.log("getItemByItemID, ID:" + itemID);
this.Item.load( itemID, function(myitem) {
if(typeof myitem === "undefined")
{
console.warn("Item not found in DB")
}
else
{
logItem(myitem);
}
});
}
this.getAllItemsInDb = function ()
{
return this.Item.all();
}
this.deleteItem = function(item)
{
console.log("deleteItem");
console.log(item);
logItem(item);
persistence.remove(item);
persistence.flush();
}
this.showAllItemsInDb = function ()
{
console.log("Items in DB");
var allItems = this.Item.all();
allItems.list(null, function (results) {
results.forEach(function (r) {
logItem(r);
});
});
}
this.saveItem = function(myItem)
{
console.log("saveItem");
logItem(myItem);
persistence.add(myItem);
persistence.flush();
}
}
logItem = function(item)
{
console.log(itemToString(item));
}
itemToString = function(item)
{
if(item.id != null)
{
myItemId = item.id;
}
return myItemId + " " +item.title() + " " +item.imageUrl() + " " + item.lat() + " " + item.long() + " " + item.state();
}
