Вы можете обрабатывать «столы» в localStorage
так:
//columns should be an array of column literals
function createTable(tableName, columns) {
db[tableName] = {rows: {}, columns: columns};
}
function insertInto(tableName, row, id) {
var newRow = {};
for (var columnName in row) {
if (db[tableName].columns.indexOf(columnName) === -1) {
//invalid column
return false;
}
newRow[columnName] = row[columnName];
}
db[tableName].rows[id] = newRow;
return true;
}
function getIDs(tableName, where) {
var IDs = [];
for (var id in db[tableName].rows) {
if (where(db[tableName].rows[id])) {
IDs[IDs.length]=id;
}
}
return IDs;
}
function update(tableName, where, what) {
what(tableName, getIDs(tableName, where));
}
function deleteRecord(tableName, where) {
var removeIDs = getIDs(tableName, where);
for (var id in removeIDs) {
//Could be done by regexes, but I am not fluent with them and I am lazy to check them out
delete db[tableName].rows[removeIDs[id]];
}
}
function select(tableName, where) {
var IDs = getIDs(tableName, where);
var result = {};
for (var id in db[tableName].rows) {
result[id] = db[tableName].rows[id];
}
return result;
}
function dropTable(tableName) {
delete db[tableName];
}
Вы, наверное, видите, что это только минималистичные реализации, но с таким же подходом можно реализовать изменять, объединение, группировка и так далее. Мое внимание здесь было просто для иллюстрации того, как вы можете создать базу данных. Давайте вернемся к следующему шагу, хранение базы данных в localStorage
:
localStorage.setItem("db", JSON.stringify(db));
Вы должны быть в состоянии преобразовать обратно в локальный элемент хранения на объект, особенно потому, что вы хотите использовать вашу базу данных даже после перезагрузки. Давайте посмотрим, как вы должны инициализировать db
:
var db = !!localStorage.getItem("db") ? angular.fromJson(localStorage.getItem("db")) : {};
пользователя ID, ID сообщения (и содержание, если вы хотите, чтобы быть читаемыми в автономном режиме), и сервер-сформированное сообщение Отметка времени даст вам достаточно информации, чтобы иметь дело с отсоединится , повторно подключается, сообщения отправляются из строя и т. д. Еще одно соображение заключается в том, чтобы иметь «беседы», а не сообщения от пользователей. Затем вам понадобится идентификатор беседы, идентификатор сообщения (& content), идентификатор пользователя и временная метка, но вы можете избежать неприятностей позже по строке (например, групповые разговоры). –
Спасибо Адаму, я думаю, я сделаю это. Я думаю, localStorage - это именно то, что есть :), а не localDB. – MichelH
Да, любая реализация потребует сначала линейного считывания любого значения (обычно JSON), которое хранится в каждом ключе. Вы могли бы использовать идентификаторы 'user' /' conversation' как ключи localStorage, но, в конечном счете, вы имеете дело с хранилищем значений ключей, а не с полным движком БД, хотя я уверен, что есть базы данных javascript, которые вы можете запускайте в клиенте, который использует localStorage для хранения своей структуры, если вы * отчаянно нуждаетесь в этом. –