验证Node.js中的URL查询字符串

YXD*_*YXD 3 javascript node.js

正确形成的查询字符串如下所示:

http://baseurl.thing/update?id=123&foo=50&bar20
Run Code Online (Sandbox Code Playgroud)

我想将此"安全"映射到一个对象中,但我不想最终得到未定义的值.有没有一种验证查询字符串的好方法?

详细信息:我想将其转换为url模块的对象.即:

var url_parts = url.parse(request.url, true);
Run Code Online (Sandbox Code Playgroud)

然后我可以基于路线url_parts.pathname.我想访问url_parts.query.id,url_parts.query.foourl_parts.query.bar,但前提是他们都存在,只有当被提供没有其他参数,所以,我没有得到沉默未定义的值出现.

ehu*_*kai 6

设置默认值,然后使用您的网址中的值覆盖它们.

var defaults = {
    id : 0,
    foo : 'default value',
    bar : 'default.value'
};

var url_parts = url.parse(request.url, true);
var query = url_parts.query;
query.prototype = defaults; //does the inheritance of defaults thing
// now query has all values set, even if they didn't get passed in.
Run Code Online (Sandbox Code Playgroud)

希望有所帮助!