node-使用querystring内置模块解决分页返回数据太多-导致json.parse()解析报错

前言

  • 最近在使用node服务,http模块调用其他服务的分页接口有时JSON.parse()会报错
  • 发现当分页返回json数据过多时,会导致控制台输出不全-数据不对-导致JSON.parse()出错
  • 查阅资料发现,控制台输出也是相当于开辟了一块空间,现在这块空间存不下这么多json数据
  • node有提供内置模块解决方案,使用querystring内置模块-把json数据以流的形式输出转换

代码实现

// 导入http模块
const http = require("http");// 导入querystring模块
const querystring = require("querystring");// 注意基地址
// let base_url = "https://ceshi.com"// 基地址-去掉https://前缀 - 不去会报错
let base_url = "ceshi.com"// post-请求 - 分页查询
// 使用promise - 方便维护和管理
const requestpost = () => {return new Promise((resolve, reject) => {// 请求参数let postData = querystring.stringify({// 页码// 页数// 总数// 参数});// 配置项const options = {// 基地址hostname: base_url,// 默认端口-不要改port: 80,// 接口路径path: "/api/ceshi/list",// 请求方式method: "post",// 请求头信息headers: {// 请求参数格式"Content-Type": "application/json; charset=utf-8",// tokenAuthorization: "",},};// 发送请求const getpost = http.request(options, (res) => {// 会包装一层data-看打印// console.log('res',res)// 使用JSONStream解析数据// 真正数据data-不然jsonStream.on会执行多次const jsonStream = JSONStream.parse(res.data);// 处理解析到的每个对象jsonStream.on("data", (data) => {// console.log("打印数据", data);// 全部数据-最外层resolve(data);});// 解析错误jsonStream.on("error", (err) => {console.error(err.message);});// 将响应流 - 放到JSONStreamres.pipe(jsonStream);});// 错误处理getpost.on("error", (err) => {// 返回失败结果reject(err.message);});// 请求参数-写入getpost.write(postData);// 结束请求-不写请求发送不出去getpost.end();});
};

总结:

经过这一趟流程下来相信你也对 node-使用querystring内置模块解决分页返回数据太多-导致json.parse()解析报错 有了初步的深刻印象,但在实际开发中我 们遇到的情况肯定是不一样的,所以我们要理解它的原理,万变不离其宗。加油,打工人!

有什么不足的地方请大家指出谢谢 -- 風过无痕

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/862637.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

鸿蒙北向开发 ubuntu20.04 gn + ninja环境傻瓜式搭建闭坑指南

ninja跟gn都是比较时髦的东西,由歪果仁维护,如果走下载源码并编译这种流程的话需要走github跟google官网下载,国内的用网环境相信各位傻瓜都知道,github跟google这几年基本是属于连不上的状态,好在你看的鸿蒙项目跟国内的一些软件大厂已经帮你爬过梯子了,ninja工具跟gn工具已经…

一文弄懂梯度下降算法

1、引言 在上一篇文章中,我们介绍了如何使用线性回归和成本损失函数为房价数据找到最拟合的线。不过,我们也看到,测试多个截距值可能既繁琐又低效。在本文中,我们将深入探讨梯度下降算法,这是一种更加强大的技术&…

初识LangChain:快速入门指南

初识LangChain:快速入门指南 随着人工智能技术的飞速发展,大型语言模型(LLMs)如GPT、BERT等已经在自然语言处理(NLP)领域取得了显著的成果。然而,这些模型的复杂性和高门槛使得许多开发者难以直…

android recyclerview 刷新 数据错乱的问题

前言 android recyclerview 错乱的问题 每次刷新item的背景框都发生偏移或者bug 解决方法 在添加数据之前先清空recyclerView的缓存 亲测有效! binding.recycler.getRecycledViewPool().clear(); binding.recycler.setLayoutManager(new LinearLayoutManager(ge…

go~缓存设计配合singleFlight

一个缓存设计,配合go的singleFlight 最开始的设计如下 添加分布式缓存 上线后分布式缓存上涨的流量并不等于下游下降的流量,而是下游下降的流量 * 2~3 究其原因,就是采用了go的singleFlight,假定请求缓存时长10ms&a…

学校消防巡检二维码卡如何使用

为了加强和规范学校消防安全管理,预防和减少火灾危害,保障公共财产和教师、职工、学生的生命安全;传统的学校消防巡检都是纸质巡检记录会存在浪费纸张、信息滞后、容易造假、容易丢失、信息更新不及时。 通过凡尔码平台生成学校消防二维码巡…

揭秘:国产化系统加密

随着信息化时代的到来,数据安全已成为国家、企业和个人共同关注的焦点。政府系统国产化作为提高信息安全和自主可控能力的重要举措,正逐步得到广泛实施。在这一过程中,沙箱技术作为一种先进的安全机制,其在国产化系统加密效果方面…

系统设计中的垂直扩展和水平扩展,该如何选择?

在系统设计时,我们需要预估系统的容量,但是,随着系统流量的增大,我们会通过扩容来应对流量,常见的扩容方式是垂直扩展和水平扩展,因此,这本文章,我们将深入探讨这两种扩展策略的优缺…

如何在Android应用程序中实现高效的图片加载和缓存机制。

在Android应用程序中实现高效的图片加载和缓存机制 一、技术难点 在Android应用程序中实现高效的图片加载和缓存机制,主要面临以下几个技术难点: 内存管理:Android设备的内存资源有限,如果加载大量高清图片而不进行适当的内存管…

项目管理中常见的6种度量指标,你知道吗?

在项目管理中,为了有效地监控和控制项目的进展、成本、质量等方面,我们通常会采用一系列的度量指标。这些度量指标不仅可以帮助项目经理了解项目的当前状态,还能预测未来的趋势,从而作出相应的决策。以下是六种常见的项目度量数据…

AI产品活跃用户排名出炉!文心一言APP国内第一,Kimi疯狂掉队

AI视频生成:小说文案智能分镜智能识别角色和场景批量Ai绘图自动配音添加音乐一键合成视频https://aitools.jurilu.com/ 6月28日,极光大数据旗下月狐数据发布2024年5月中国生成式AI行业市场热点月度分析报告,披露了国内移动端主流生成式AI应用…

论都江堰泛计算操作系统对国产芯片产业作用

摘要:本文探讨了中国芯片产业面临的“缺芯”和“芯片内卷”问题,指出高端芯片依赖进口,低端芯片市场竞争激烈。提出都江堰泛计算操作系统作为破局之策,其多机调度和运行机制能发挥中低端芯片优势,提高效率,…

QT/QML国际化:中英文界面切换显示(cmake方式使用)

目录 前言 实现步骤 1. 准备翻译文件 2. 翻译字符串 3.设置应用程序语言 cmake 构建方式 示例代码 总结 1. 使用 file(GLOB ...) 2. 引入其他资源文件 再次生成翻译文件 5. 手动更新和生成.qm文件 其他资源 前言 在当今全球化的软件开发环境中,应用程…

BFS:队列+树的宽搜

一、二叉树的层序遍历 . - 力扣&#xff08;LeetCode&#xff09; 该题的层序遍历和以往不同的是需要一层一层去遍历&#xff0c;每一次while循环都要知道在队列中节点的个数&#xff0c;然后用一个for循环将该层节点走完了再走下一层 class Solution { public:vector<vec…

AUTOSAR以太网之IPv4

系列文章目录 返回总目录 文章目录 系列文章目录一、IPv4报文格式二、主要函数1.IPv4_Init()2.IPv4_Receive()3.IPv4_Transmit() 一、IPv4报文格式 二、主要函数 1.IPv4_Init() 这个函数除了对模块配置进行初始化&#xff0c;如果有分包和组包使能&#xff0c;则会对一些相关…

桌面提醒工具哪个好?简单好用的便签提醒app推荐

在日常的生活和工作中&#xff0c;我们经常会遇到各种各样的事情&#xff0c;有时候可能会遗忘一些重要的事情。这个时候&#xff0c;一个简单好用的便签提醒工具就显得尤为重要了。那么&#xff0c;哪款桌面提醒工具比较好用呢&#xff1f;下面&#xff0c;就为大家推荐一款我…

ONNX模型利用CUDA加速如何正确配置好环境?

目前onnx可选的执行引擎非常多&#xff0c;覆盖了从cpu、gpu到npu&#xff0c;从Intel平台到AMD平台等。如下是onnxruntime所有的执行引擎。 [TensorrtExecutionProvider, CUDAExecutionProvider, MIGraphXExecutionProvider, ROCMExecutionProvider, OpenVINOExecutionProvide…

基于公有云部署wordpress

云平台选择 腾讯云 阿里云 华为云 项目部署 一、架构讲解 1.1、定义与组成 LNMP是Linux、Nginx、MySQL&#xff08;或MariaDB&#xff09;和PHP&#xff08;或Perl、Python&#xff09;的首字母缩写&#xff0c;代表在Linux系统下使用Nginx作为Web服务器&#xff0c;MySQL作为…

Mongodb安装与配置

Mongodb的下载 这里下载的是MongoDB 7.0.11版本的 首先进入官网&#xff1a;https://www.mongodb.com/ 点击完上面两步后&#xff0c;加载来到该页面&#xff0c;选择自己的版本、系统&#xff0c;是压缩包(zip)还是安装包(msi)。 下载好之后能&#xff0c;来到安装包哪里&a…

互联网直播/点播技术与平台创新应用:视频推拉流EasyDSS案例分析

随着互联网技术的快速发展&#xff0c;直播/点播平台已成为信息传播和娱乐的重要载体。特别是在电视购物领域&#xff0c;互联网直播/点播平台与技术的应用&#xff0c;不仅为用户带来了全新的购物体验&#xff0c;也为商家提供了更广阔的营销渠道。传统媒体再一次切实感受到了…