Библиотеки GWT / JS для DB-подобного временного хранилища - PullRequest
0 голосов
/ 27 ноября 2011

Я ищу библиотеку, написанную на GWT или Javascript, которая позволяет мне помещать данные в какую-то структуру, которая позволила бы мне выполнять запросы, подобные базам данных.

Например, я мог бы хранить несколькозаписи, а затем задавать вопросы, например, дать мне все записи, соответствующие определенным условиям.

Уровень оптимизации менее важен ... например, сканирование может быть подходящим для большинства приложений, так как этот код будет работать на стороне клиента нанебольшие объемы данных.

1 Ответ

0 голосов
/ 27 ноября 2011

Библиотека

Есть TrimQuery :

Для богатых разработчиков веб-приложений движок TrimQuery от TrimPath - это легкий компонент с открытым исходным кодом GPL / APL, который позволяет использовать SQL-запросы во время работы в веб-браузере.

Нет библиотеки

... хотя для вашей заявленной цели, кажется, достаточно легко зацикливаться на массиве объектов, возможно, используя один из новых методов ES5 Array, таких как filter (которые достаточно просты для добавить при запуске в браузере, который не имеет собственных копий). Например, если у вас есть массив объектов, представляющих автомобили, это дает вам синие:

// Get only blue cars
var blueCars = store.filter(function(entry) {
    return entry.color === "blue";
});

Живой пример

Или, если вы не хотите беспокоиться о добавлении filter в старые браузеры, просто используйте простой цикл for:

var blueCars, index, entry;

blueCars = [];
for (index = 0; index < store.length; ++index) {
    entry = store[index];
    if (entry && entry.color === "blue") {
        blueCars.push(entry);
    }
}

Вот store Я использую любой из них против:

// The data store
var store = [
    {color: "blue", make: "Toyota"},
    {color: "red", make: "Toyota"},
    {color: "green", make: "Toyota"},
    {color: "blue", make: "Ford"},
    {color: "silver", make: "Ford"},
    {color: "blue", make: "Jaguar"},
    {color: "red", make: "Jaguar"},
    {color: "green", make: "Fiat"}
];

А вот как добавить filter, если его изначально нет (реализация не по назначению, вы можете поискать библиотеки типа es5-shim , которые пытаются выполнить более тщательную работу, или просто используйте простой цикл for):

// Add `filter` if not already there
if (typeof Array.prototype.filter === "undefined") {
  (function() {
    display("(Added <code>filter</code>, browser didn't have it natively)");
    function Array$filter(callback, thisArg) {
      var index, value, result;

      result = [];
      for (index = 0; index < this.length; ++index) {
        if (this.hasOwnProperty(index)) {
          value = this[index];
          if (callback.call(thisArg, value, index, this)) {
            result.push(value);
          }
        }
      }
      return result;
    }
    if (typeof Object.defineProperty !== "undefined") {
      Object.defineProperty(Array.prototype, "filter", {
        enumerable: false
      });
    }
    else {
      Array.prototype.filter = Array$filter;
    }
  })();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...