我应该使用 App Maker 的服务器脚本、计算客户端还是关系来过滤要显示的数据

Should I use App Maker's Server Script, Calculated Client, or Relations to filter data for display

我想我在如何过滤和显示 App Maker 数据方面缺少一个核心概念。

目标

1) 我想维护两个手动模式数据模型。

Persons:
  PrimaryEmail
  personName
Vehicles:
  PrimaryEmail
  vehicleColor

2) 我想在同一页上并排显示两个 table

在一个 table 中显示 所有车辆,在第二个 table 中仅显示用户的车辆PrimaryEmail 是他们共享的密钥。


我试过的

服务器脚本

此查询脚本用于第三个数据源,UserVehicles,returns 我想在第二个 table 中显示的记录。

function getUserVehicleData() {
  var uE = Session.getActiveUser().getEmail();
  var q = app.models.Vehicle.newQuery();
  q.filters.PrimaryEmail._equals = uE;
  var d = q.run();
  return d;
}

但是,我发现客户端有必要经常调用 app.datasources.UserVehicle.load(); 但即使是第二个 table 也不会显示来自(table 一个的 updated/added 记录使用 Vehicle 数据源,table 两个使用 UserVehicles)。我 认为 我还需要在 load() 回调中工作,但我不知道如何告诉第二个 table UserVehicles 中有刷新数据。

客户端计算

这个选项听起来是对的。我希望客户端向服务器查询 Vehicle 的 PrimaryEmail 与当前用户匹配的记录。

我没有看到客户端如何过滤来自服务器的记录。与服务器脚本 API 不同,var data = app.models.Vehicle.newQuery(); 不是有效的客户端脚本。那么,一个不加载数据到变量里面去loop/filter/create客户端计算脚本中的新记录?

关系

我复制了一个教程并创建了人与车之间的一对多关系。这在不推荐使用的外键周围引入了错误。此外,我无法推断如何为当前用户使用与过滤器的这种关系。 (我不是100%掌握UI)。

问题

我想了解如何显示更新和过滤的数据以及应该如何过滤数据(服务器、客户端计算、关系)。我一定是遗漏了什么,这一定很简单。

已解决

我使用服务器脚本来解决这个问题。

function getUserVehicleData() {
  var uE = Session.getActiveUser().getEmail();
  var q = app.models.Vehicle.newQuery();
  q.filters.PrimaryEmail._equals = uE;
  var d = q.run();
  return d;
}

我缺少的是这段客户端脚本。

app.pages.UserVehicles.createChildren();

没有它,UI 将不会刷新列表以使用来自数据源的更新数据。

谢谢马库斯!