正确形成的查询字符串如下所示:
http://baseurl.thing/update?id=123&foo=50&bar20
我想将这个“安全”地映射到一个对象中,但我不想最终得到未定义的值。有没有一种验证查询字符串的好方法?
详细信息:我想将其转换为具有url
模块的对象。即:
var url_parts = url.parse(request.url, true);
然后我可以根据url_parts.pathname
进行路由。我想访问url_parts.query.id
,url_parts.query.foo
和url_parts.query.bar
,但前提是它们都存在且仅在没有提供其他参数的情况下才会访问,这样我就不会出现静默的未定义值。< / p>
答案 0 :(得分: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.
希望有所帮助!