【问题标题】:Using JayData to filter Header Detail Table - Inner Join SQL, oData使用 JayData 过滤 Header Detail Table - Inner Join SQL, oData
【发布时间】:2012-12-29 13:09:19
【问题描述】:

你好我有点新,使用 JayData 和 oData 所以请原谅我的无知。

这是我的对象结构:

$data.Entity.extend('PlannerModel.vMasterPlanner', {
    'Sequence_Number': { key:true,type:'Edm.Int32',nullable:false,required:true },
    'Scenario_Name': { type:'Edm.String',nullable:true,maxLength:250 },
    'Activity_ID': { type:'Edm.String',nullable:false,required:true,maxLength:250 },
    'Activity_Description': { type:'Edm.String',nullable:true,maxLength:500 },
    'Object_ID': { type:'Edm.String',nullable:true,maxLength:250 },
    'Object_Description': { type:'Edm.String',nullable:true,maxLength:400 },
    'Operation_Code': { type:'Edm.String',nullable:false,required:true,maxLength:250 },
    'Operation_Description': { type:'Edm.String',nullable:true,maxLength:50 },
    'Crew_ID': { type:'Edm.String',nullable:true,maxLength:250 },
    'Crew_Name': { type:'Edm.String',nullable:true,maxLength:50 },
    'Period': { type:'Edm.Int32',nullable:true },
    'vActivity': { type:'PlannerModel.vActivity',required:true,inverseProperty:'vMasterPlanners' }   });

 $data.Entity.extend('PlannerModel.vActivity', {
    'Activity_ID': { key:true,type:'Edm.String',nullable:false,computed:true },
    'Activity_Name': { type:'Edm.String',nullable:false,required:true },
    'vMasterPlanners': { type:'Array',elementType:'PlannerModel.vMasterPlanner',inverseProperty:'vActivity' }   });


$data.EntityContext.extend('PlannerServiceLibrary.PlannerEntities', {
    ProgressDetails: { type: $data.EntitySet, elementType: PlannerModel.ProgressDetails },
      ProgressHeaders: { type: $data.EntitySet, elementType: PlannerModel.ProgressHeader },
      vCrews: { type: $data.EntitySet, elementType: PlannerModel.vCrew },
      vPeriods: { type: $data.EntitySet, elementType: PlannerModel.vPeriod },
      vOperations: { type: $data.EntitySet, elementType: PlannerModel.vOperation },
      vActivities: { type: $data.EntitySet, elementType: PlannerModel.vActivity },
      vMasterPlanners: { type: $data.EntitySet, elementType: PlannerModel.vMasterPlanner }   });

稍微解释一下: 主计划表是明细表,表活动是表头表 我需要从活动表(标题)中选择所有活动,其中在详细表中找到的工作人员 ID 例如 = 2 我如何使用 oData 和 JayData 来做到这一点

我正在使用

provider.vActivities.filter(function (ac) { 
return ac.vMasterPlanners.Crew_ID == "FM2_F/W" })
               .toArray(function (e) {
                   console.log(e);
               });

这是要处理的错误未知表达式类型:EntitySetExpression localhost/mobile-web/htdocs/assets/jayData/jaydata.js 89号线

请帮助任何人!

谢谢!

【问题讨论】:

    标签: javascript odata jaydata datajs


    【解决方案1】:

    您需要“一些”或“每个”运算符,请参阅http://jaydata.org/blog/using-some-and-every-with-jaydata-odata-provider

    【讨论】:

    • 你能用我提供的表格给我一个例子吗?我已经看过这篇文章,但我不明白你在过滤器中再次调用这个变量 subFilter 的方式谢谢!!!!
    • 嗨它应该是这样的: var subFilter = provider.vMasterPlanner.filter(function(ac){return ac.Crew_ID == "FM2_F/W";}); provider.vActivities.filter(function (ac) { ac.vMasterPlanners.some(this.subfilter);},{subfilter:subfilter}).toArray(...
    • 在这种情况下你只需要'some'或'every'(1..n),1..1或n..1不需要它。 'some' 表示至少有一条记录匹配,every 表示所有记录都必须匹配
    • 尚未解决:-/我记得我已经尝试过了,它给了我这个错误
    • 400 Bad Request 15ms datajs-1.0.3.js (line 1074) "NetworkError: 400 Bad Request - localhost/PlannerService/Planner.svc//…" 恐怕这与我的服务有关? var subFilter = provider.vMasterPlanners.filter(function(ac){return ac.Crew_ID == "FM2_F/W";}); provider.vActivities.filter(function (ac) { ac.vMasterPlanners.some(this.subfilter); }, { subfilter: subFilter }).toArray(function (e) { console.log(e);})
    【解决方案2】:

    这似乎是一个已知问题,我已将其添加到 github http://github.com/jaydata/jaydata/issues/70

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-10-26
      • 2021-08-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多