用于类似DB的临时存储的GWT / JS库

时间:2011-11-27 09:26:07

标签: javascript database gwt

我正在寻找一个用GWT或Javascript编写的库,它允许我将数据放到某种结构中,这样就可以进行类似数据库的查询。

例如,我可能会存储一些记录,然后提出类似的问题,给我所有符合特定条件的记录。

优化级别不太重要......例如,扫描可能适用于大多数应用程序,因为此代码将在少量数据上运行客户端。

1 个答案:

答案 0 :(得分:0)

TrimQuery

  

对于富Web应用程序开发人员来说,TrimPath的 TrimQuery 引擎是一个轻量级的GPL / APL开源组件,可让您在Web浏览器中运行时获得SQL查询的强大功能。

没有图书馆

...虽然对于你声明的目标,似乎很容易循环遍历对象数组,可能使用一种新的ES5 Array方法,如filter(这些方法很容易添加在没有本机副本的浏览器中运行)。例如,如果你有一个代表汽车的对象数组,那么你会得到蓝色的对象:

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

Live example

或者如果您不想担心将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;
    }
  })();
}
相关问题