我认为我缺少如何过滤和显示App Maker数据的核心概念。
1)我想维护两个手动模式的数据模型。
Persons:
PrimaryEmail
personName
Vehicles:
PrimaryEmail
vehicleColor
2)我想在同一页面上并排显示两个表。
在一个表中显示所有车辆,在第二个表中仅显示用户的车辆。 PrimaryEmail 是他们共享的密钥。
服务器脚本
此查询脚本的第三个数据源UserVehicles
返回我要在第二个表中显示的记录。
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();
,但是即使第二张表也不会显示来自(表一使用Vehicle
数据源的更新/添加的记录,表二是使用UserVehicles
)。我认为我还需要在load()回调内部进行工作,但是我看不出如何告诉第二张表UserVehicles
中有刷新的数据。
计算得出的客户
此选项听起来正确。我希望客户端查询服务器以获取车辆PrimaryEmail
与当前用户匹配的记录。
我看不到如何在客户端上过滤来自服务器的记录。与服务器脚本API不同,var data = app.models.Vehicle.newQuery();
不是有效的客户端脚本。因此,是否不将数据加载到要在客户端计算的脚本中循环/过滤/创建新记录的变量中?
关系
我复制了一个教程,并创建了人与车之间的一对多关系。这引入了围绕已弃用外键的错误。另外,我无法说明如何为当前用户将这种关系用于过滤器。 (我不是100%掌握UI)。
我想了解如何显示更新和过滤后的数据以及应如何过滤该数据(服务器,客户端计算出的关系)。我必须缺少一些东西,这必须很简单。
答案 0 :(得分:0)
我使用服务器脚本来解决这个问题。
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将不会刷新列表以使用数据源中的更新数据。
谢谢马库斯!