首页 > 解决方案 > 如何重新执行 App Maker Datasource 的查询脚本

问题描述

目标

使用 App Maker 收集用户生日并仅显示本月的生日。

问题

我有一个数据模型,persons. 在该模型中有两个数据源,默认persons和第二个birthdaysThisMonth。数据源查询脚本birthdaysThisMonth正确运行并仅从模型返回本月的生日persons

persons但是,当我更改数据源中的生日时,数据birthdaysThisMonth源保持不变,例如,查询脚本birthdaysThisMonth重新执行

要更改生日,我从日期选择器中选择一个新日期,新值显示在表格中。我没有使用提交按钮,当日期选择器失去焦点时,我看到了变化。

我试过的

此脚本在设置为的数据源作为查询脚本执行。它返回我想要的记录。birthdaysThisMonthManual save mode

function setBirthdays() {
  var calcRecords = [];
  var personsRecords = app.models.persons.newQuery().run();
  for (i=0; i<personsRecords.length; i++) {
    var id = app.models.persons.newQuery().filters.Id._equals = i;
    if (personsRecords[i].birthdate.getMonth() == thisMonth())  {
      var calcRecord = app.models.persons.newRecord();
      calcRecord.emailSecondary = personsRecords[i].emailSecondary;
      calcRecord.birthdate = personsRecords[I].birthdate;
      calcRecord.Id = personsRecords[i].Id;
      calcRecords.push(calcRecord);
    }
  }
  return calcRecords;
}

问题

birthdaysThisMonth更新数据后如何重新执行查询脚本persons。如何触发查询,以便它重新评估数据persons并相应地过滤。

使用事件onAfterSave似乎很有希望,但我还没有找到这样的例子。

顺便提一句

如果可能的话,我希望这项工作发生在服务器端。

标签: google-apps-scriptgoogle-cloud-platformgoogle-cloud-sqlgoogle-app-maker

解决方案


有关答案,请参阅 Markus Malessa 的评论。

不幸的是,您不能使用诸如 onAfterSave 之类的服务器事件来触发在客户端上重新加载数据源,因此您提出的解决方案将不起作用。似乎您唯一可能的解决方案是使您的人员数据源成为手动保存数据源,以更改出生日期的形式,您将需要一个调用 widget.datasource.saveChanges() 的“保存”按钮,并在该函数中合并一个回调,它将重新加载您的birthdaysThisMonth 数据源

我试图推/拉数据的方式不是很好。看起来手动模式提供了我需要的功能类型。


推荐阅读