首页 > 解决方案 > tableSvc.retrieveEntity 检索以前版本的 Azure 表存储数据

问题描述

我在 Bot Framework SDK3 中有一个对话框瀑布,每个对话框都会做一些事情,直到它切换到与 tableSvc.retrieveEntity 的对话框,它正确地识别了需要从 Azure 表中检索的实体(根据给定的 PartionKey 和 RowKey)......

...但是被检索的实体(我用 console.log('Result') 检查它已经过时了(一步 [几秒钟,在用户与机器人的对话期间通过] 在 Azure 表中存储的实际数据之后- 需要在此对话框中检索的真实数据...)

对话尚未结束(稍后会) - 在此阶段存储和检索实际数据很重要......

如何在此对话框中获取实际数据?

标签: node.jsbotframeworkazure-table-storageazure-bot-service

解决方案


好吧,对于那些有类似问题的人......我想,这与 Node.js 的事件循环有关......

我不确定它是一个防弹解决方案,还是一个临时的“黑客”,但我这样说并且它有效(当我尝试使用 setTimeout 0 ms - 它对我不起作用,当我设置它到 500 毫秒 - 它可以工作,所以我想 1000 毫秒可能是一个安全的临时破解..在我找到更好的解决方案之前)..

如果有人知道更好、更强大的解决方案,请更新此线程。

setTimeout( () => {
      tableSvc.retrieveEntity('table', pkey, rkey, funcdtion(error, result, response) {
        if(!error) {
          var res1 = result.Data._;
          console.log(res1); // Now it prints actual data stored in 'table' - which I really need, and not its previous (outdated) version
        } else {
          console.log('Some error happened...');
        };
      });
}, 1000);

推荐阅读