我正在寻找一种存储用户数据和消息的简单策略。我正在考虑为用户使用不同的键值,例如一些随机令牌( Ynjk_nkjSNKJN ),并为消息使用一些真实的ID(1,2,3)。
有没有人遇到过这个问题?
原因是我希望localStorage
始终保持最新来自服务器的新消息,但不应在更新期间删除用户。
由于
答案 0 :(得分:1)
您可以这样处理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")) : {};
答案 1 :(得分:0)
Localstorage是一个键值存储,它以{
"query": {
"bool": {
"must": [
{
"nested": {
"path": "address",
"filter": {
"geo_distance": {
"distance": "address.radius", // How to set address.radius in kilometer
"location": {
"lat": 48.873452,
"lon": 2.3522219
}
}
}
}
}
]
}
}}
格式存储所有内容。因此,消息将通过一个密钥(例如"消息")和用户另一个密钥(例如"用户")来识别。
然后,您需要为消息创建一个(角度)服务,为用户创建一个。两者都将与localstorage接口(使用相应的键)并将执行您想要的操作。
如果您向我们提供更多信息,那么我们可以为您提供更多帮助。