将Azure Easy Table与WHERE子句同步

时间:2019-06-20 13:55:05

标签: azure xamarin.forms azure-mobile-services

我正在开发Xamarin.Forms应用程序,该应用程序将Azure应用程序服务与通过EasyTables链接的SQL数据库一起使用。我已经在服务器上运行了示例并成功测试了查询表等,并启用了脱机同步,以便创建了localdb。

我已经创建了商店,定义了表并对其进行了同步,但是我希望能够通过where子句以某种方式查询它-可能吗?是否可以在client.GetSyncTable行中添加where子句?

var store = new MobileServiceSQLiteStore("localstore.db");
store.DefineTable<Journey_Stages>();
client.SyncContext.InitializeAsync(store);
tbl_Stages = client.GetSyncTable<Journey_Stages>();

我要下拉的某些表会随着时间的增长而增长并链接到各个用户个人资料,因此我只希望属于该用户的数据,并且我不想每次都减少海量数据,最好让服务器来处理此问题,并且仅根据每个用户降低我的需求。

谢谢

史蒂夫

1 个答案:

答案 0 :(得分:1)

您应该在服务器端添加此过滤逻辑,以使每个用户的数据都不会暴露给所有其他用户。例如,如果使用的是Node.js后端,请参见this sample -第17行为表读取查询添加了WHERE子句。如果您拥有.Net后端,则表控制器中也会包含类似的逻辑。

// Configure specific code when the client does a request
// READ - only return records belonging to the authenticated user
table.read(function (context) {
  context.query.where({ userId: context.user.id });
  return context.execute();
});