node使用querystring內置模塊解決分頁返回數(shù)據太多導致json.parse()解析報錯問題
更新時間:2024年09月06日 09:51:12 作者:-風過無痕
這篇文章主要介紹了node使用querystring內置模塊解決分頁返回數(shù)據太多導致json.parse()解析報錯問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
前言
- 最近在使用node服務,http模塊調用其他服務的分頁接口有時JSON.parse()會報錯
- 發(fā)現(xiàn)當分頁返回json數(shù)據過多時,會導致控制臺輸出不全-數(shù)據不對-導致JSON.parse()出錯
- 查閱資料發(fā)現(xiàn),控制臺輸出也是相當于開辟了一塊空間,現(xiàn)在這塊空間存不下這么多json數(shù)據
- node有提供內置模塊解決方案,使用querystring內置模塊-把json數(shù)據以流的形式輸出轉換
代碼實現(xiàn)
// 導入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) => { // 請求參數(shù) let postData = querystring.stringify({ // 頁碼 // 頁數(shù) // 總數(shù) // 參數(shù) }); // 配置項 const options = { // 基地址 hostname: base_url, // 默認端口-不要改 port: 80, // 接口路徑 path: "/api/ceshi/list", // 請求方式 method: "post", // 請求頭信息 headers: { // 請求參數(shù)格式 "Content-Type": "application/json; charset=utf-8", // token Authorization: "", }, }; // 發(fā)送請求 const getpost = http.request(options, (res) => { // 會包裝一層data-看打印 // console.log('res',res) // 使用JSONStream解析數(shù)據 // 真正數(shù)據data-不然jsonStream.on會執(zhí)行多次 const jsonStream = JSONStream.parse(res.data); // 處理解析到的每個對象 jsonStream.on("data", (data) => { // console.log("打印數(shù)據", data); // 全部數(shù)據-最外層 resolve(data); }); // 解析錯誤 jsonStream.on("error", (err) => { console.error(err.message); }); // 將響應流 - 放到JSONStream res.pipe(jsonStream); }); // 錯誤處理 getpost.on("error", (err) => { // 返回失敗結果 reject(err.message); }); // 請求參數(shù)-寫入 getpost.write(postData); // 結束請求-不寫請求發(fā)送不出去 getpost.end(); }); };
總結
經過這一趟流程下來相信你也對 node-使用querystring內置模塊解決分頁返回數(shù)據太多-導致json.parse()解析報錯 有了初步的深刻印象,但在實際開發(fā)中我 們遇到的情況肯定是不一樣的,所以我們要理解它的原理,萬變不離其宗。
以上為個人經驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
Nodejs使用mysql2操作數(shù)據庫的方法完整講解
MySQL2是一個基于Node.js的MySQL數(shù)據庫驅動程序,它是MySQL官方推薦的驅動之一,下面這篇文章主要給大家介紹了關于Nodejs使用mysql2操作數(shù)據庫的相關資料,需要的朋友可以參考下2024-01-01electron demo項目npm install安裝失敗的解決方法
下面小編就為大家分享一篇electron demo項目npm install安裝失敗的解決方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-02-02Node.js中npm 和 peerDependencies的使用
本文詳細介紹了npm中的peerDependencies和--legacy-peer-deps使用,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2025-01-01