在 App Maker 的 table 小部件中显示每个用户的记录

Show records per user in table widget in App Maker

我的第一个 App Maker 应用程序即将完成(学到了很多东西,感谢迄今为止的帮助!)。该应用程序当前会在用户登录和退出工作站点时收集时间戳数据。由于离开和返回之间的时间可能有几个小时,而且因为 App Maker 是基于浏览器的,所以我最初遇到的问题是用户无法完成记录并点击 Time_IN 按钮。我通过将 Time IN 按钮移动到附加到记录页面的弹出窗口来解决这个问题,这样当用户回来工作时他们可以打开记录,点击 时间 IN 并启程。简单吧?

我现在的问题是用户无法在 UserRecords 页面上看到他们自己的记录,除非我让他们成为管理员,但随后它授予了对完整 table 不只是他们自己,显示所有用户的所有记录。导航菜单原来有我删除的这段代码:

(@user.roles).indexOf('Admins', 'Managers') !== -1

但我不确定我是否遗漏了什么,因为问题似乎仍然部分是基于用户角色的?这是数据源字段的图像,此应用程序中只有两个模型,GatePass(如图所示)和目录(用于用户选择器)。

导出看起来像这样(想法是让每个用户都有自己的数据,而不是整个源 table):

此外,这就是用户输入页面现在的样子(如果有帮助的话),我设法让用户电子邮件在 onBeforeCreate 中使用 record.Email = Session.getActiveUser().getEmail(); 自动填充:

简而言之,用户应该只能在 UserRecords 页面中看到他们的记录,以便他们可以访问并完成提交。他们的出口也是如此。有人可以帮忙吗?

在您的模型中,转到 DATASOURCES 选项卡。如果出现多个数据源,则由您选择正确的数据源。确保取消选中 Automatically load data.

选项

接下来,转到 table 所在的页面。然后在 table onAttach 事件上放置以下内容:

var ds = widget.datasource;
if(!app.user.role.Admins){
  ds.query.filters.Email._equals = app.user.email;
}
ds.load();

这应该可以解决问题。关于管理员角色的权限问题,请确保模型具有适当的权限。为此,请转到模型的 SECURITY 选项卡并确保设置正确的权限。

参考文献:

https://developers.google.com/appmaker/security/secure-app-data https://developers.google.com/appmaker/models/datasources