是否有任何用于 Web SQL (javascript) 的 ORM 框架? [关闭]

Posted

技术标签:

【中文标题】是否有任何用于 Web SQL (javascript) 的 ORM 框架? [关闭]【英文标题】:Are there any ORM frameworks for Web SQL (javascript)? [closed] 【发布时间】:2010-08-31 20:26:27 【问题描述】:

有人知道现在有还是将来会有?

【问题讨论】:

【参考方案1】:

有一个新的叫做JayData library,这个类似于javascript 平台的EntityFramework(或NHibernate):提供JavaScript Language Query (JSLQ) 和JavaScript CRUD。还支持模型定义、navigationProperties 和 1..1.0、1..m、m..n 关系。

我复制了一个简短的代码n-p,说明如何使用它:

//define storage model: Department and Employee in a 1..m relation

$data.Entity.extend("$org.types.Department", 
  Id:  type: "int", key: true, computed: true ,
  Name:  type: "string", required: true ,
  Address:  type: "string" ,
  Employees:  type: "Array", elementType: "$org.types.Employee", inverseProperty:"Department" 
);


$data.Entity.extend("$org.types.Employee", 
  Id:  type: "int", key: true, computed: true ,
  FirstName:  type: "string", required: true ,
  LastName:  type: "string", required: true , 
  Department:  type: "$org.types.Department", inverseProperty:"Employees"
);

$data.EntityContext.extend("$org.types.OrgContext", 
  Department:  type: $data.EntitySet, elementType: $org.types.Department ,
  Employee:  type: $data.EntitySet, elementType: $org.types.Employee 
);

您可以针对 OrdContext 和其中的集合进行编码。以下行将创建一个由本地 WebSQL 支持的上下文实例(您有其他选项,如 indexeddb 或 OData)

var context = new $org.types.OrgContext( name: "webSql", databaseName: "OrgDB" );

添加一些数据

var department = new $org.types.Department( Name: 'Finance', Employees: [] );

var emp1 = new $org.types.Employee( FirstName: 'John', LastName: 'Smith');
department.Employees.push(emp1);

var emp2 = new $org.types.Employee( FirstName: 'Jane', LastName: 'Smith');
emp2.Department = department;

context.add(department);
context.add(emp2);

context.saveChanges();

现在您在商店中有数据,您可以查询它。实体字段以及指向 m..1 方向的导航字段支持 JSLQ 查询。 (在 1.0 版本中,您不能直接针对 1..m navProperties。您可以使用 in 表达式来规避此问题

//filter
context.Employees
  .filter( function(emp)  return emp.LastName == 'Smith' )
  .toArray(...);

//filter
context.Employees
  .filter( function(emp)  return emp.FirstName.startsWith('J') ||
                                  emp.LastName.toLowerCase.contains('mith') )
  .toArray(...);

//filter2
context.Employees
  .filter( function(emp)  return emp.Department.Id == 1 )
  .toArray( function(emps)   );

//filter2 + eager load
context.Employees
  .include("Department")
  .filter( function(emp)  return emp.Department.Id == 1 )
  .toArray( function(emps)   );


//map/project
context.Employees
  .filter( function(emp)  return emp.Department.Id == 1 ).toArray(...)
  .map( function(emp)  return  EmployeeName: emp.FirstName + emp.LastName, 
                                DepartmentName: emp.Department.Name )
  .forEach( function(item)  ... )

【讨论】:

【参考方案2】:

我正在寻找同样的东西。这似乎是微不足道的选择。对我来说最有希望的是persistence.js。 Impel 看起来也不错,但不幸的是,它看起来一年半没有更新了。 ActiveRecord.js 最终可能会成功,但他们似乎还不支持 Web SQL。希望有人会发布更多选项。

【讨论】:

【参考方案3】:

我也在寻找同样的东西。 JazzRecord 看起来很可能是候选人。

【讨论】:

【参考方案4】:

基于JazzRecord 的实现是为Appcelerator Titanium framework 设计的joli.js 实现。

【讨论】:

以上是关于是否有任何用于 Web SQL (javascript) 的 ORM 框架? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

是否有任何 jar 可用于在 java 中更快地执行 sql 查询? [关闭]

是否有任何已发布的编码风格指南用于重命名 SQL 视图中的列?

是否有任何用于 ASP.NET MVC 应用程序的优秀开源 Comet Web 服务器?

是否有用于执行 html 的库? [关闭]

是否有任何类似的技术/服务,例如用于 MEAN 堆栈的 .net 技术中的控制台应用程序?

JWT( JSON Web Token )的 实践,以及与 Session 对比