首页 文章

查询引用其他数据源的数据源

提问于
浏览
0

我不确定我是否采取了正确的方法;我有两个数据模型,CoursesFiled和TraineesFiled . 它们都有一个名为CourseName的字段 . 每个受训者记录都有一个CourseName字段,该字段也出现在CoursesFiled中 .

最终产品需要两页 . 首先,有一个包含所有课程的表格 . 选择一个,这将用户带到下一页,其中一个表显示所选课程中的所有受训者 .

我对此有些新意,并认为最简单的方法是在TraineesFiled模型上设置查询数据源,查询脚本如下所示:

var courseName = "Register-2012-10-02(xxxxxxxxx).xml";//hardcoded for now, to be replaced with variable being passed from UI for app.datasources.CoursesFiled.item.CourseName;
var query = app.models.TraineesFiled.newQuery();
query.filters.CourseName._equals = courseName ;
query.run();

当我使用query-datasouce创建一个新表作为它的数据源时,它会加载以下错误:

Fri Oct 12 10:59:46 GMT+200 2018
The function queryRecords returned undefined, please make sure a value was 
explicitly returned. Error: The function queryRecords returned undefined, 
please make sure a value was explicitly returned.
E
Fri Oct 12 10:59:46 GMT+200 2018
Executing query for datasource TraineesFiled1: (Error) : The function 
queryRecords returned undefined, please make sure a value was explicitly 
returned.
E
Fri Oct 12 10:59:46 GMT+200 2018
Executing query for datasource TraineesFiled1 failed.

我哪里错了?我是以错误的方式完全解决这个问题的吗?

1 回答

  • 1

    official documentation 中所述,当使用查询脚本时,需要 RETURN 结果 .

    例如,假设您只想返回年龄为偶数的员工并应用查询中指定的最小年龄 . 您可以在查询脚本代码编辑器中编写以下代码段:

    var employeeResult = [];
    // Modify passed query to additionally filter by minimum age.
    query.filters.Age._greaterThan = 20;
    var employeesAboveMinimumAge = query.run();
    for (var i = 0; i < employeesAboveMinimumAge.length; i++) {
      if (employeesAboveMinimumAge[i].age % 2 == 0) {
        employeeResult.push(employeesAboveMinimumAge[i]);
      }
    }
    return employeeResult;
    

    这意味着您需要做的就是在代码中添加 return 语句:

    var courseName = "Register-2012-10-02(xxxxxxxxx).xml";
    var query = app.models.TraineesFiled.newQuery();
    query.filters.CourseName._equals = courseName ;
    return query.run();
    

相关问题