0

我在我的快递应用程序中使用这个(内容导出)库,就像这样

const app = require('express');

...

app.get('/export', (req, rex, next) => {
  const contentfulExport = require('contentful-export');
  const options = {
     ...
  }
  contentfulExport(options).then((result) => {
     res.send(result);
  });
})

现在这确实有效,但是该方法需要一些时间并将状态/进度消息发送到节点控制台,但我也想让用户保持更新..有没有办法可以将节点控制台进度消息发送到客户??

这是我第一次使用 node / express 任何帮助将不胜感激,我不确定这是否已经有了答案,因为我不完全确定该怎么称呼它?

4

1 回答 1

0

查看内容导出的文档我认为这是不可能的。这通常在 Node 中工作的方式是你有一个对象(contentfulExport在这种情况下),你在这个对象上调用一个方法,并且同一个对象也是一个 EventEmitter。这样你就会得到一个钩子来对触发的事件做出反应。

// pseudo code
someLibrary.on('someEvent',  (event) => { /* do something */ })
someLibrary.doLongRunningTask()
  .then(/* ... */)

这没有为内容导出记录,所以我假设没有办法挂钩发送到控制台的日志消息。

不过,您的问题还有另一个棘手的角度。在您共享的代码中,您包含一个端点 ( /export)。如果您想显示更新或显示一些进度,您可能需要第二个端点来提供有关您的长期运行任务的进度的信息(尽管您无法通过 contentful-export 访问)。

通常处理这种情况的方式是,您通过某个 HTTP 端点启动一个长时间运行的任务,然后使用另一个通过轮询或 Web 套接字连接提供信息的端点。

抱歉,我无法给出适当的解决方案,但由于内容导出的限制,我认为没有一种干净/简单的方法来显示导出数据的进度。

希望有帮助。:)

于 2019-08-21T23:15:04.197 回答