Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/404.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
是否有用于Web SQL(javascript)的ORM框架?_Javascript_Sql_Orm - Fatal编程技术网

是否有用于Web SQL(javascript)的ORM框架?

是否有用于Web SQL(javascript)的ORM框架?,javascript,sql,orm,Javascript,Sql,Orm,有人知道现在有没有或者在不久的将来会有吗?我也在寻找同样的东西。这似乎是微不足道的选择。对我来说最有希望的是。看起来也不错,但不幸的是,它看起来已经一年半没有更新了。最终可能会成功,但他们似乎还不支持Web SQL。希望有人能发布更多选项。我也在寻找同样的东西。看起来很可能是一个候选者。一个基于的实现是为设计的实现。有一个新的称为,这个类似于JavaScript平台的EntityFramework(或NHibernate):提供和JavaScript CRUD。还支持模型定义、导航属性和1..1

有人知道现在有没有或者在不久的将来会有吗?

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

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

一个基于的实现是为设计的实现。

有一个新的称为,这个类似于JavaScript平台的EntityFramework(或NHibernate):提供和JavaScript CRUD。还支持模型定义、导航属性和1..1.0、1..m、m..n关系

我复制了一个关于如何使用它的简短代码片段:

//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 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。您可以使用表达式中的
来规避此问题

//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) { ... })
//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) { ... })