代码之家  ›  专栏  ›  技术社区  ›  DarkW1nter

如果超过50行,节点后端的xamarin表单pull async将失败

  •  0
  • DarkW1nter  · 技术社区  · 7 年前

    当从Xamarin窗体跨平台应用程序在node.js后端运行pullasync时,如果表最多有50行,则调用成功。

     public async Task Sync<T>()
            {
                if (!CrossConnectivity.Current.IsConnected) { return; }
                var table = Client.GetSyncTable<T>();
    
                if (Client.SyncContext.IsInitialized)
                {
                    await table.PullAsync(null, table.CreateQuery());
                }
            }
    

    pullasync似乎添加了skip(0)和take(50)。 如果我打电话给一张超过50人的桌子,即使我已经指定了 table.maxTop = 100; 在节点表定义中,应用程序错误

    Error:An error occurred while sending the request
    

    当神经感觉

    {System.Net.WebException: Error: ConnectFailure (Connection timed out) ---> System.Net.Sockets.SocketException: Connection timed out.....
    

    但我认为这是因为在添加了maxtop=100的节点端出现了一个错误。 是否有任何明显的我丢失,我需要检索超过50行一次?

    我读 this post 它详细描述了类似的事情,查询一个Azure表,但是我想在使用pullasync时这样做。

    更新:

    好吧,我想发生的是,

    如果我最多有50排,那就没问题了。

    超过50,我认为第一个查询将使用skip(0)、take(50)运行。

    它将以skip(50)take(50)再次运行,每次递增skip total,直到没有更多要处理的行为止。

    似乎,虽然这是它应该表现的方式,但在前50年之后,它实际上并没有成功。

    1 回复  |  直到 7 年前
        1
  •  0
  •   DarkW1nter    7 年前

    找到了答案。

    更换管路

    await table.PullAsync(null, table.CreateQuery());
    

    具有

            var query = table.CreateQuery().Skip(0).Take(1000);
            var pullOptions = new PullOptions() { MaxPageSize = 5000 };
            await table.PullAsync(null, query, pullOptions);
    

    做了这个把戏

    推荐文章