Node.js:查询中的数组

标签 node.js

有请求:/test?strategy[]=12&strategy[]=23

在 PHP 中,我们可能会收到带有以下代码的数组:

$_GET['strategy']

即使它有 1 个参数,它也会是数组。


在 JS 中我们可以使用这段代码:

var query = url.parse(request.url, true).query;
var strategy = query['strategy[]'] || [];

但是如果有 1 个参数 strategy( /test?strategy[]=12),它就不是一个数组。
我认为检查元素计数并将 strategy 转换为 [strategy ](如果它等于 1)是一个肮脏的解决方案。

如何从 Node.js 中的查询中获取数组?

最佳答案

Node 本身不解析这些类型的数组——它也不解析 PHP 所谓的“关联数组”或 JSON 对象(将 a[key]=val 解析为 { a : { key: 'val' } } ).

对于这样的问题,你应该使用包qs解决:

var qs = require("qs");
qs.parse('user[name][first]=Tobi&user[email]=tobi@learnboost.com');
// gives you { user: { name: { first: 'Tobi' }, email: 'tobi@learnboost.com' } }

qs.parse("user[]=admin&user[]=chuckNorris");
qs.parse("user=admin&user=chuckNorris");
// both give you { user: [ 'admin', 'chuckNorris' ] }

// The inverse way is also possible:
qs.stringify({ user: { name: 'Tobi', email: 'tobi@learnboost.com' }})
// gives you user[name]=Tobi&user[email]=tobi%40learnboost.com

关于Node.js:查询中的数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17569384/

相关文章:

node.js - 在不同文件中为 Mongoose 需要另一个模型中的模型模式

node.js - 使用 Node.js 轮询 REST 服务

node.js - 在 Sequelize 查找方法的 where 条件中使用列别名时出错

node.js - 发布大型 NPM 包

javascript - Node js npm 包 OSX 失败

JavaScript 平台独立行分隔符

node.js - 从所有 git 历史记录中删除文件

javascript - 在带有辅助函数的 ejs 中使用 .then 返回 [ object promise ]

node.js - 错误 : EACCES: permission denied, 打开 '/home/myname/.config/insight-nodejs/insight-yo.json.3782504431'

node.js - 如何编写针对路径参数中的操作的路由