如何从 api 获得响应,但不是 504 网关超时问题

Posted

技术标签:

【中文标题】如何从 api 获得响应,但不是 504 网关超时问题【英文标题】:How to get response from an api, but not a 504 gateway time out issue 【发布时间】:2019-05-29 20:43:23 【问题描述】:
module.exports.usersPagination = (root,  start, limit ) => 
return new Promise((resolve, reject) =>  
var status = true;
db.User.find(accountType:'user',isDeleted: $ne: 
status).count().exec((err, count) => 
db.User.find(accountType:'user',isDeleted: $ne: 
status).sort(created:-1).skip(start).limit(limit).exec((err, user) => 

if(user)

 user[0].count = count
 err ? reject(err) : resolve(user);       
 
 )
 );
 );
 ;

我收集了 80,000 条记录,我想在 UI 中每页显示 20-20 条,但我的问题是当我尝试将起始值设为“30000”时 在邮递员中,它显示网关超时,请帮帮我。 提前感谢

【问题讨论】:

【参考方案1】:

您得到的错误是由于服务器处理请求并返回响应的时间过长:

504 网关超时:服务器充当网关或代理,没有收到来自上游服务器的及时响应。 (来自***)

确实,您的代码对数据库执行了两次查询:

    确实第二次执行跳过start行,但是... ...查询的第一个实例是具体化数据库中的整个行集。

只查询一次,不要具体化整组行。

【讨论】:

我想显示收集的总用户数,所以我使用的是查询的第一个实例 得到了解决方案,在第二次执行时我删除了sort(created:-1),它对我来说工作正常

以上是关于如何从 api 获得响应,但不是 504 网关超时问题的主要内容,如果未能解决你的问题,请参考以下文章

Elastic Beanstalk Worker 的 SQS 守护程序在 1 分钟后获得 504 网关超时

连接 Facebook Graph API 时 ElasticBeanstalk for PHP 上的 504 网关超时

网页出现“504 Gateway Time-out”,没有其它信息是啥原因?

504 Gateway Timeout 是啥意思

约 30 秒后 AWS API 网关超时

504 网关超时媒体寺