如何检查查询字符串是否具有Express.js / Node.js中的值?

时间:2014-10-10 05:01:56

标签: javascript node.js express

如何检查传递给Express.js应用程序的查询字符串是否包含任何值?如果我的API网址可以是:http://example.com/api/objectshttp://example.com/api/objects?name=itemName,那么哪些条件语句可用于确定我要处理的内容?

我当前的代码如下,它总是评估为'应该没有字符串'选项。

if (req.query !== {}) {
    console.log('should have no query string');
}
else {
    console.log('should have query string');
}

4 个答案:

答案 0 :(得分:21)

您需要做的就是检查Object中的密钥长度,如下所示

Object.keys(req.query).length === 0


旁注:你暗示if-else的方式错误,

if (req.query !== {})     // this will run when your req.query is 'NOT EMPTY', i.e it has some query string.

答案 1 :(得分:3)

如果要检查是否没有查询字符串,可以进行正则表达式搜索,

if (!/\?.+/.test(req.url) {
    console.log('should have no query string');
}
else {
    console.log('should have query string');
}

如果您正在寻找单个参数,请尝试使用

if (!req.query.name) {
    console.log('should have no query string');
}
else {
    console.log('should have query string');
}

答案 2 :(得分:0)

我们可以使用下划线JS Library

内置了isEmpty(obj)函数。返回true / false。

因此,代码将如下所示:-

const underscore = require('underscore');
console.log(underscore.isEmpty(req.query));

答案 3 :(得分:0)

我通常检查查询字符串中的变量是否已定义。可以在ExpressJS中使用url包:

dashboard