【问题标题】:Query datasource referencing other datasources查询引用其他数据源的数据源
【发布时间】:2018-10-13 01:11:10
【问题描述】:

我不确定我是否在这里采取了正确的方法;我有两个数据模型,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();

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

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.

我哪里错了?我是不是完全走错了路?

【问题讨论】:

    标签: google-app-maker


    【解决方案1】:

    official documentation 中所述,使用查询脚本时,您需要返回结果。

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

    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();
    

    【讨论】:

    • 太棒了,谢谢!那行得通:) 但是,我确实找到了一种更简单的方法,即使用查询生成器。我将查询设置为 CourseName = :MyParameter,然后将 MyParameter 绑定到“@datasources.CoursesFiled.item.CourseName”。但很高兴知道这两种方法的工作原理。
    猜你喜欢
    • 2015-04-22
    • 2012-05-18
    • 2013-04-13
    • 2019-11-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-01
    相关资源
    最近更新 更多