程序问答   发布时间:2022-06-02  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了使用堆栈 Angular/Express/MongoDB 拆分 HTTP 请求大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决使用堆栈 Angular/Express/MongoDB 拆分 http 请求?

开发过程中遇到使用堆栈 Angular/Express/MongoDB 拆分 http 请求的问题如何解决?下面主要结合日常开发的经验,给出你关于使用堆栈 Angular/Express/MongoDB 拆分 http 请求的解决方法建议,希望对你解决使用堆栈 Angular/Express/MongoDB 拆分 http 请求有所启发或帮助;

我有数百个元素要从 MongoDB 数据库中获取并在前端打印。 将所有内容提取到单个请求中可能会降低性能,因为它在正文响应中携带大量有效负载。 因此,我正在寻找一种解决方案,将我的 Angular 请求拆分为多个并且同时约束。

例:

@H_993_2@mongoDB 集合:元素(_ID,名称,子项,...) 文档:10000+

但我们只需要大约 100-500 个元素

角度:

    const observables = [];
    const iteration = 5,IDParent = 'eufe4839ffcdsj489483'; // example
    for (let i = 0; i < iteration; i++) {
      observables.push(
        this.myhttpservice.customgetmethod<Element>(ColLECTION_name,endpoint,'IDParent=' + IDParent + '&limit=??')); // url with query
    }

    forkJoin(observables).subscribe(
      data => {
           this.elements.push(data[0]);
           this.elements.push(data[1]);
      },err => console.error(err)
    );

我使用 forkJoin 是因为我需要同时请求以获得更好的性能。 这个想法是向后端发送多个具有不同限制参数值的请求,并在最后将整个元素集放入数据对象中。 唯一的目的是拆分请求以避免由于有效负载主体的大小而导致的大延迟和可能的错误。

我如何继续使用给定的堆栈来执行这样的操作?我想避免使用 websockets。

解决方法

我认为 fork.join 用于并行解析所有 observable,但您需要等待所有请求,如果一个请求失败怎么办? forkJoin 会在遇到第一个错误时立即完成,您有点无法知道它来自哪个 observable ,但是如果您处理内部 observable 中的错误,您可以轻松实现这一点。

const observables = [];
    const iteration = 5,idParent = 'eufe4839ffcdsj489483'; // example
    for (let i = 0; i < iteration; i++) {
      observables.push(
        this.myhttpservice.customGetMethod<Element>(COLLECTION_NAME,endpoint,'idParent=' + idParent + '&limit=??')).pipe(catchError(() => {
       throw `an Error request #: ${i}`;
     }); // url with query
    }

    forkJoin(observables).subscribe(
      data => {
           this.elements.push(data[0]);
           this.elements.push(data[1]);
      },err => console.error(err)
    );

如果您想将数据显示为列表,另一种方法是引入 infinite-scroll 或 ngx-infinite-scroll。

如果符合您的要求,您还可以在前端添加分页。有一个库可以帮助您:Syncfusion grids。也可以通过其他方式提高后端性能。

大佬总结

以上是大佬教程为你收集整理的使用堆栈 Angular/Express/MongoDB 拆分 HTTP 请求全部内容,希望文章能够帮你解决使用堆栈 Angular/Express/MongoDB 拆分 HTTP 请求所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。