HTML5 - window.localStorage получить данные - PullRequest
0 голосов
/ 22 марта 2012

В настоящее время я передаю данные в локальную базу данных следующим образом:

    window.localStorage.setItem('QQIDVAL' + ID, JSON.stringify(this));

Как мне затем извлечь все данные из локального хранилища и найти те, которые начинаются с "QQ"

Также, как мне выбрать столбцы, которые я хочу получить, поскольку JSON.stringify (this) имеет много столбцов, но мне нужно только их подмножество.

Ответы [ 4 ]

1 голос
/ 22 марта 2012

Вы можете хранить массив в вашем localStorage.

Что-то вроде , что (я не управлял Jsonify. Вы могли бы использовать Lawnchair для облегчения этих операций)

window.localStorage.setItem('QQ', {items: [] });

function addItem(id, json) {
  var o = window.localStorage.getItem('QQ');
  o.items[id] = json;
  window.localStorage.setItem(o);
}

function getItem(id) {
  return window.localStorage.getItem('QQ').items[id];
}

function getAllItems() {
   return window.localStorage.getItem('QQ').items;
}

function printAllItems() {
   var all = getAllItems();
   for (id in all) {
     console.log(id +" => "+ all[id]);
   }
}
0 голосов
/ 22 марта 2012

Вы можете воспользоваться тем, что localStorage обрабатывается как объект, и делать что-то вроде этого (перебирая ключи и проверяя их имя):

​for(dataObj in localStorage) {
    if(dataObj.charAt(0) == Q && dataObj.charAt(1) == Q) {
        // do whatever with your data object, it starts with QQ
        var myObj = localStorage[dataObj];
    }
}​

Вы также можете изменить ifУтверждение об этом:

if(dataObj.substr(0,2) == "QQ") { // do your thing

Хотя сейчас у вас нет ссылки на документацию substr(), не вспоминайте, правильный ли это синтаксис.

0 голосов
/ 22 марта 2012

Многие фреймворки, такие как Sencha Touch и Backbone , имеют некоторую базовую возможность имитировать функциональность БД с использованием localStorage. Если вы хотите создать собственное решение, я бы предложил сделать что-то более похожее на это:

// get the user store
var users = getUsers();
var john = user["john1234"];

// get all of the existing users
function getUsers() {
  return JSON.parse(window.localStorage.users) || {};
}

// save users
function saveUsers(users) {
  window.localStorage.users = JSON.stringify(users);
}

// add a user
function addUser(user) {
  var id = user.id || new Date().getTime();
  users[id] = user;
}

Поэтому я предлагаю вместо объединения вещей, основанных на строке, разделить их на отдельные коллекции или хранилища, используя стандартные

Это ни в коем случае не конкретный ответ на ваш вопрос, но он может вам помочь!

0 голосов
/ 22 марта 2012

Это следует делать с базами данных, а не с хранилищем (которое предназначено для пар ключ-значение).Попробуйте поискать IndexedDB или Web SQL в качестве ключевых слов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...