如何从Azure Mobile App后端删除生成的查询?

时间:2017-07-20 13:07:52

标签: azure xamarin azure-mobile-services

我有一个使用Xamarin Forms和Visual Studio构建的跨平台移动应用程序,它使用Azure移动应用程序表api来获取其数据。我注意到后端似乎运行了额外的增量同步查询,该查询检查updatedAt列的时间戳。

有没有人知道在Azure上的node.js后端内生成查询的位置(或者哪个文件包含它),或者更确切地说,我如何删除它?这是我们不需要的条件,因为它会在应用listview中生成虚假数据,这会使所有内容都显示为错误。

澄清node.js后端移动应用是使用移动应用配置(https://blog.xamarin.com/getting-started-azure-mobile-apps-easy-tables/)内的Easy Tables在Azure上自动生成的。您只需添加表格的名称,它就会为您添加versiondeletedupdatedAtcreatedAt列。

这是一个奇怪的,但我觉得我的数据完全失控,我制作的应用程序只是准备好,所以最终用户永远不会删除或更新任何内容。

由于

1 个答案:

答案 0 :(得分:2)

  

有没有人知道在Azure上的node.js后端内生成查询的位置(或者哪个文件包含它),或者更确切地说,我如何删除它?

当您使用非空查询ID调用PullAsync时,会添加其他查询。正如official document有关增量同步的说明:

  

pull操作的第一个参数是仅在客户端上使用的查询名称。 如果使用非空查询名称,Azure Mobile SDK将执行增量同步。每次pull操作返回一组结果时,该结果集中的最新updatedAt时间戳存储在SDK本地系统表中。后续拉取操作仅检索该时间戳之后的记录

要根据updatedAt列停用其他查询,您可以将null作为查询ID 传递。在这种情况下,通过PullAsync在每次通话时检索所有记录,如下所示:

await todoTable.PullAsync(null, todoTable.CreateQuery().Where(t => t.UserId == "<userid>"));
  

这是我们不需要的条件,因为它会在应用列表视图中生成虚假数据,这会使一切看起来都不正确。

根据我的理解,增量同步用于优化将服务器数据提取到您的设备中。以下是一些注意事项,您可以查看您的应用程序:

  • 由于Azure移动客户端SDK在updatedAt字段上添加了自己的排序,因此您无法使用具有自己的orderBy子句的拉取查询。

  • 查询名称可以是您选择的任何字符串,但对于您应用中的每个逻辑查询,它必须是唯一的。否则,不同的拉取操作可能会覆盖相同的增量同步时间戳,并且您的查询可能会返回不正确的结果。

有关详细信息,请参阅Offline Data Sync in Azure Mobile Apps

此外,对于具有非空查询ID的PullAsync,在成功检索数据并更新到本地数据存储之后,客户端SDK将使用最新{更新/插入__config表来自拉取结果的{1}}时间戳以及SQLite数据库的updatedAt等于id,如下所示: