- Node.js 教程
- Node.js - 首页
- Node.js - 简介
- Node.js - 环境搭建
- Node.js - 第一个应用程序
- Node.js - REPL 终端
- Node.js - 命令行选项
- Node.js - 包管理器 (NPM)
- Node.js - 回调函数概念
- Node.js - 上传文件
- Node.js - 发送邮件
- Node.js - 事件
- Node.js - 事件循环
- Node.js - 事件发射器
- Node.js - 调试器
- Node.js - 全局对象
- Node.js - 控制台
- Node.js - 进程
- Node.js - 应用程序扩展
- Node.js - 打包
- Node.js - Express 框架
- Node.js - RESTful API
- Node.js - 缓冲区
- Node.js - 流
- Node.js - 文件系统
- Node.js MySQL
- Node.js - MySQL 入门
- Node.js - MySQL 创建数据库
- Node.js - MySQL 创建表
- Node.js - MySQL 插入数据
- Node.js - MySQL 查询数据
- Node.js - MySQL 条件查询
- Node.js - MySQL 排序
- Node.js - MySQL 删除数据
- Node.js - MySQL 更新数据
- Node.js - MySQL 连接查询
- Node.js MongoDB
- Node.js - MongoDB 入门
- Node.js - MongoDB 创建数据库
- Node.js - MongoDB 创建集合
- Node.js - MongoDB 插入数据
- Node.js - MongoDB 查找数据
- Node.js - MongoDB 查询
- Node.js - MongoDB 排序
- Node.js - MongoDB 删除数据
- Node.js - MongoDB 更新数据
- Node.js - MongoDB 数据限制
- Node.js - MongoDB 连接查询
- Node.js 模块
- Node.js - 模块
- Node.js - 内置模块
- Node.js - 实用工具模块
- Node.js - Web 模块
- Node.js 有用资源
- Node.js - 快速指南
- Node.js - 有用资源
- Node.js - 讨论
Node.js - querystring.parse() 方法
使用 Node.js 的 querystring.parse() 方法,可以将 URL 查询字符串解析为一个对象,该对象包含给定 URL 查询字符串中的键值对。此方法返回的对象不继承 JavaScript 的原型。这意味着 JavaScript 的对象方法和其他方法未定义,将无法工作。
默认情况下,查询字符串的百分号编码字符将被假定为使用 UTF-8 编码。必须指定 decodeURIComponent 选项才能解码其他字符编码。
语法
以下是 Node.js querystring.parse() 方法的语法:
querystring.parse(str[, sep[, eq[, options]]])
参数
此方法接受四个参数。这些参数如下所述。
str − 此参数指定要解析的 URL 查询字符串。
sep − 此参数描述一个子字符串,用于在查询字符串中定义键值对。默认值为 '&'。
eq − 此参数描述一个子字符串,用于在查询字符串中定义键和值。默认值为 '='。
options − 这是一个对象,它允许修改方法的行为。下面描述了此对象的以下属性:
decodeURIComponent − 这是一个用于解码查询字符串中百分号编码字符的函数。默认情况下,它是 querystring.unescape()。
maxKeys − 此属性指定要解析的最大键数。如果指定为 0,则键计数将无限大。默认值为 1000。
返回值
此方法将返回一个已解析的 URL 查询字符串,将其转换为键值对集合。
示例
如果我们将 URL 字符串 (str) 传递给 querystring.parse() 方法,它将返回一个对象,该对象包含从提供的 URL 字符串解析的键值对。
在下面的示例中,我们将 URL 字符串传递给 Node.js querystring.parse() 方法。
const querystring = require('node:querystring'); let urlQuery = "name=varma1&role=writer&tech=nodejs&permission=true"; console.log(querystring.parse(urlQuery));
输出
internal/modules/cjs/loader.js:596 throw err; ^ Error: Cannot find module 'node:querystring' at Function.Module._resolveFilename (internal/modules/cjs/loader.js:594:15) at Function.Module._load (internal/modules/cjs/loader.js:520:25) at Module.require (internal/modules/cjs/loader.js:650:17) at require (internal/modules/cjs/helpers.js:20:18) at Object.<anonymous> (/home/cg/root/63a03fcfc3513/main.js:1:83) at Module._compile (internal/modules/cjs/loader.js:702:30) at Object.Module._extensions..js (internal/modules/cjs/loader.js:713:10) at Module.load (internal/modules/cjs/loader.js:612:32) at tryModuleLoad (internal/modules/cjs/loader.js:551:12) at Function.Module._load (internal/modules/cjs/loader.js:543:3)
注意 − 要查看实际结果,请在本地执行上述代码。
执行上述程序后,Node.js querystring.parse() 方法将返回一个包含键值对的对象。
[Object: null prototype] { name: 'varma1', role: 'writer', tech: 'nodejs', permission: 'true' }
示例
如果 sep 和 eq 参数中提供的值与指定 URL 字符串的分隔符不匹配,则 Node.js querystring.parse() 方法将无法正常工作。如果匹配,它将返回包含键值对的对象。
在下面的程序中,我们将 && 传递给 sep 参数,并将 = 传递给 Node.js querystring.parse() 方法的 eq 参数。
const querystring = require('node:querystring'); let urlQuery = "name=varma1&&role=writer&&tech=nodejs&&permission=true"; console.log(querystring.parse(urlQuery, "&&", "="));
输出
internal/modules/cjs/loader.js:596 throw err; ^ Error: Cannot find module 'node:querystring' at Function.Module._resolveFilename (internal/modules/cjs/loader.js:594:15) at Function.Module._load (internal/modules/cjs/loader.js:520:25) at Module.require (internal/modules/cjs/loader.js:650:17) at require (internal/modules/cjs/helpers.js:20:18) at Object.<anonymous> (/home/cg/root/63a03fcfc3513/main.js:1:83) at Module._compile (internal/modules/cjs/loader.js:702:30) at Object.Module._extensions..js (internal/modules/cjs/loader.js:713:10) at Module.load (internal/modules/cjs/loader.js:612:32) at tryModuleLoad (internal/modules/cjs/loader.js:551:12) at Function.Module._load (internal/modules/cjs/loader.js:543:3)
注意 − 要查看实际结果,请在本地执行上述代码。
如果执行上述程序,则输出将显示如下。
[Object: null prototype] { name: 'varma1', role: 'writer', tech: 'nodejs', permission: 'true' }
示例
如果提供的 sep 和 eq 值与指定的 URL 字符串的分隔符不匹配,则 Node.js querystring.parse() 方法将无法按预期工作。如果匹配,它将返回包含键值对的对象。
在下面的程序中,我们将 & 传递给 sep 参数,并将 − 传递给 Node.js querystring.parse() 方法的 eq 参数。
const querystring = require('node:querystring'); let urlQuery = "User-john&role−softwareeng&tech−HTML&permission−false"; console.log(querystring.parse(urlQuery, "&", "−"));
输出
internal/modules/cjs/loader.js:596 throw err; ^ Error: Cannot find module 'node:querystring' at Function.Module._resolveFilename (internal/modules/cjs/loader.js:594:15) at Function.Module._load (internal/modules/cjs/loader.js:520:25) at Module.require (internal/modules/cjs/loader.js:650:17) at require (internal/modules/cjs/helpers.js:20:18) at Object.<anonymous> (/home/cg/root/63a03fcfc3513/main.js:1:83) at Module._compile (internal/modules/cjs/loader.js:702:30) at Object.Module._extensions..js (internal/modules/cjs/loader.js:713:10) at Module.load (internal/modules/cjs/loader.js:612:32) at tryModuleLoad (internal/modules/cjs/loader.js:551:12) at Function.Module._load (internal/modules/cjs/loader.js:543:3)
注意 − 要查看实际结果,请在本地执行上述代码。
如果执行上述程序,则输出将显示如下。
[Object: null prototype] { User: 'john', role: 'softwareeng', tech: 'HTML', permission: 'false' }
示例
Node.js querystring.parse() 方法将返回 maxkeys 参数中指定的最大键数之前的 键和 值对。
在下面的示例中,我们执行两种情况。在第一种情况下,我们将 1 传递给 maxkeys 参数。在第二种情况下,maxkeys 设置为 2。
const { url } = require('node:inspector'); const querystring = require('node:querystring'); let QueryString = "User−john&role−softwareeng&tech−HTML&permission−false"; console.log(querystring.parse(QueryString, "&", "−", { maxKeys: 1})); console.log(querystring.parse(QueryString, "&", "−", { maxKeys: 2}));
输出
internal/modules/cjs/loader.js:596 throw err; ^ Error: Cannot find module 'node:inspector' at Function.Module._resolveFilename (internal/modules/cjs/loader.js:594:15) at Function.Module._load (internal/modules/cjs/loader.js:520:25) at Module.require (internal/modules/cjs/loader.js:650:17) at require (internal/modules/cjs/helpers.js:20:18) at Object.<anonymous> (/home/cg/root/63a03fcfc3513/main.js:1:79) at Module._compile (internal/modules/cjs/loader.js:702:30) at Object.Module._extensions..js (internal/modules/cjs/loader.js:713:10) at Module.load (internal/modules/cjs/loader.js:612:32) at tryModuleLoad (internal/modules/cjs/loader.js:551:12) at Function.Module._load (internal/modules/cjs/loader.js:543:3)
注意 − 要查看实际结果,请在本地执行上述代码。
如果执行上述程序,则输出将显示如下。
[Object: null prototype] { User: 'john' } [Object: null prototype] { User: 'john', role: 'softwareeng' }
示例
如果我们向 maxkeys 参数提供 0,则键计数限制将无限。
在下面的程序中,我们将 0 传递给 Node.js querystring.parse() 方法的 maxkeys 参数。
const { url } = require('node:inspector'); const querystring = require('node:querystring'); let QueryString = "User−Kasyap&role−Manager&Exp−eightyrs&permission−true"; console.log(querystring.parse(QueryString, "&", "−", { maxKeys: 0}));
输出
internal/modules/cjs/loader.js:596 throw err; ^ Error: Cannot find module 'node:inspector' at Function.Module._resolveFilename (internal/modules/cjs/loader.js:594:15) at Function.Module._load (internal/modules/cjs/loader.js:520:25) at Module.require (internal/modules/cjs/loader.js:650:17) at require (internal/modules/cjs/helpers.js:20:18) at Object.<anonymous> (/home/cg/root/63a03fcfc3513/main.js:1:79) at Module._compile (internal/modules/cjs/loader.js:702:30) at Object.Module._extensions..js (internal/modules/cjs/loader.js:713:10) at Module.load (internal/modules/cjs/loader.js:612:32) at tryModuleLoad (internal/modules/cjs/loader.js:551:12) at Function.Module._load (internal/modules/cjs/loader.js:543:3)
注意 − 要查看实际结果,请在本地执行上述代码。
如果执行上述程序,则输出将显示如下。
[Object: null prototype] { User: 'Kasyap', role: 'Manager', Exp: 'eightyrs', permission: 'true' }