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

 更新时间:2024年09月06日 09:51:12   作者:-風过无痕  
这篇文章主要介绍了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",
        // token
        Authorization: "",
      },
    };
 
    // 发送请求
    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);
      });
 
      // 将响应流 - 放到JSONStream
      res.pipe(jsonStream);
 
    });
 
    // 错误处理
    getpost.on("error", (err) => {
      // 返回失败结果
      reject(err.message);
    });
 
    // 请求参数-写入
    getpost.write(postData);
 
    // 结束请求-不写请求发送不出去
    getpost.end();
 
  });
};

总结

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

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • windows使用nvm对node进行版本管理切换的完整步骤

    windows使用nvm对node进行版本管理切换的完整步骤

    这篇文章主要介绍了windows使用nvm对node进行版本管理切换的完整步骤,在使用之前各位务必卸载掉自己安装过的nvm或者node版本包括环境变量之类的,要保证自己的电脑完全没有node环境,需要的朋友可以参考下
    2024-03-03
  • socket.io实现在线群聊功能

    socket.io实现在线群聊功能

    这篇文章主要为大家详细介绍了socket.io实现在线群聊功能的相关资料,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-04-04
  • 原生node.js案例--前后台交互

    原生node.js案例--前后台交互

    本文主要介绍了原生node.js案例--前后台交互。本案例包含4部分:(1)HTML部分;(2)ajax部分;(3)JavaScript部分;(4)node服务器部分。具有很好的参考价值,下面跟着小编一起来看下吧
    2017-02-02
  • 基于nodejs+express4.X实现文件下载的实例代码

    基于nodejs+express4.X实现文件下载的实例代码

    本篇文章主要介绍了详解nodejs+express4.X的文件下载的实例代码,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-07-07
  • 使用nodejs写接口的详细步骤

    使用nodejs写接口的详细步骤

    这篇文章主要给大家介绍了关于使用nodejs写接口的详细步骤,在Node.js中接口可以采用多种形式,包括函数接口、对象接口和事件接口等,需要的朋友可以参考下
    2023-10-10
  • NodeJS学习笔记之(Url,QueryString,Path)模块

    NodeJS学习笔记之(Url,QueryString,Path)模块

    今天我们来看一下在nodejs中路径的相关操作方法。在我们开发过程中路径主要有:URL路径,在浏览器中进行使用,当然这个也包含查询字符串QueryString的相关操作;而另一种是磁盘路径,主要用于文件等等进行操作,我们称为Path,所以我将它们放在一起进行总结学习。
    2015-01-01
  • Nodejs实现的一个简单udp广播服务器、客户端

    Nodejs实现的一个简单udp广播服务器、客户端

    这篇文章主要介绍了Nodejs实现的一个简单udp广播服务器、客户端,本文直接给出实现代码,需要的朋友可以参考下
    2014-09-09
  • 搭建一个nodejs脚手架的方法步骤

    搭建一个nodejs脚手架的方法步骤

    这篇文章主要介绍了如何搭建一个nodejs脚手架的方法步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-06-06
  • Nodejs使用dgram模块创建UDP服务详解

    Nodejs使用dgram模块创建UDP服务详解

    这篇文章主要为大家介绍了Nodejs使用dgram模块创建UDP服务详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-10-10
  • 使用Node实现Git仓库批量克隆的操作步骤

    使用Node实现Git仓库批量克隆的操作步骤

    分享一个node脚本,通过调用gitee的OpenApi获取自己的代码仓库列表,达到批量克隆项目的效果,文中通过代码示例和图文讲解的非常详细,感兴趣的小伙伴可以参考阅读一下
    2024-04-04

最新评论