tableSvc.retrieveEntity检索以前版本的Azure表存储数据

时间:2018-11-19 22:53:52

标签: node.js botframework azure-table-storage azure-bot-service

我在Bot Framework SDK3中拥有大量对话框, 每个对话框都会执行某项操作,直到切换到带有tableSvc.retrieveEntity的对话框为止,该对话框正确地标识了要从Azure表中检索到的必需实体(根据给定的PartionKey和RowKey)...

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

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

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

1 个答案:

答案 0 :(得分:0)

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

我不确定这是防弹解决方案还是临时的“黑客”, 但是我这样说,并且可以正常工作(当我尝试使用setTimeout 0 ms时-它对我不起作用,当我将其设置为500ms时,它可以工作,因此我想1000 ms可能是一个安全的临时技巧。我找到了更好的解决方案)。

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

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);