【问题标题】:SailsJS stream status from backend to frontendSailsJS 从后端流状态到前端
【发布时间】:2023-04-04 04:11:01
【问题描述】:

在我的 web 应用程序中,我使用 SailsJS 后端从 API(facebook graph api)获取数据,获取的数据将在完成获取后保存在后端的数据库中。

所以我的问题是,当我向后端发出请求以完成所有这些工作时,我如何向用户显示已经完成了多少工作。目前我只能显示一个加载图标。但我喜欢展示 1% 已完成,89% 已完成

sailsjs 应用在后端创建 1000 条记录。对。当我在前端创建每条记录时,我需要知道。你知道我的意思 ?我需要对 Web 浏览器的响应,说 1/1000 记录已创建

如果你熟悉这个框架,请在这里帮助我

干杯。

【问题讨论】:

  • 您是否使用sails.js api 对您的数据做一些复杂的事情?或者您是否试图概括一个问题以解决不同的问题。我问是因为一个简单的数据库保存可能比请求本身花费的时间更少。
  • 你没有得到我的问题。我需要一种将数据流式传输到前端的方法。就是这样。你知道在sailsJS中怎么做吗
  • 是的,但您的问题没有提供任何可用信息来提供示例。 Sails 在节点之上使用 express。您可以简单地使用 response.write() 作为方法。但是您需要一个触发此事件的事件,甚至不确定这是否是您应用程序的正确工具。
  • 示例 - 一个 Sailsjs 应用程序在后端创建 1000 条记录。对。当我在前端创建每条记录时,我需要知道。你知道我的意思 ?我需要对 Web 浏览器的响应,说 1/1000 记录已创建。
  • Sails 带有 WebSockets - 您可以尽可能实时地进行。您需要的内容甚至包含在 Sails.js 的核心中 - 请参阅 docs

标签: node.js express sails.js sails.io.js


【解决方案1】:

基本上,您可以以某种方式循环创建记录,然后使用 response.write() 将更新流式传输给用户。这是一个粗略的例子:

function doStuff(req,res){

// You can use response.write() to do what you need.
var processedRecords = 0;
var totalRecords = 1000;

res.status(200);
while (processRecords < totalRecords){

    Model.create( --create model stuff-- , function(){
       processedRecords++;
       res.write('Finished ' + processedRecords + 'of ' + totalRecords);
     })

  }
  return res.end();

}

【讨论】:

  • 现在一切都好,但是我使用 Jquery 发送的请求直到最后一刻才收到此消息,
  • jQquery 只是在服务器发送 res.ok() 时把所有东西都吐出来了请帮忙
  • 问题是当我使用地址栏中的 Web 浏览器链接发出 GET 请求时,我看到服务器响应显示在屏幕上。但是我不能用 jQuery GET 函数来发生同样的事情。请帮忙
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-12-04
  • 2012-10-21
  • 2019-12-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多