我使用 JayData
liberary,我想知道可以在 JayData 中模拟内部连接,例如:
Customers inner join Orders on
Customers.CustomerID = Orders.CustomerID
这怎么可能?
JayData 在当前版本中通常不支持 AdHoc 连接。不过,它在路线图上。
但是,可以通过多种方式实现类似的行为,具体取决于您的需求和基础数据提供程序。我假设您使用的是 OData 提供程序。
在这种情况下,可以使用导航属性来表示关系,从而在查询上实现隐式联接。
实体和上下文定义:
$data.Entity.extend("Customer", {
Id: { key: true, computed: true, type: 'int' },
Name: { type:string },
Orders: { type: $data.EntitySet, elementType: 'Order', inverseProperty: 'Customer' }
});
$data.Entity.extend("Order" {
Id: { key: true, computed: true, type: 'int' },
Customer: { type: Customer, inverseProperty: 'Orders' }
});
$data.EntityCotnext.extend("CustomerOrders", {
Customers: { type: $data.EntitySet, elementType: Customer },
Orders: { type: $Data.EntitySet, elementType: Order }
});
1)按客户查询订单:
context.Orders.filter( function(order) {
return order.Customer.Name.startsWith('John');
}).toArray(...)
2)按订单查询客户:这是JayData 1.1中发布的新功能(确保更新您的文件)
ordersQuery = context.Orders.filter( function(order) { return order.Value > 200 });
context.Customers.filter( function(customer) {
return custom.Orders.some(ordersQuery);
}).toArray(...);