express.query()是什么作用?
发布于 7 年前 作者 kaimZhou 4640 次浏览 来自 问答
module.exports = function query(options) {
  var opts = Object.create(options || null);
  var queryparse = qs.parse;
  if (typeof options === 'function') {
    queryparse = options;
    opts = undefined;
  }
  if (opts !== undefined && opts.allowPrototypes === undefined) {
    // back-compat for qs module
    opts.allowPrototypes = true;
  }
  return function query(req, res, next){
    if (!req.query) {
      var val = parseUrl(req).query;
      req.query = queryparse(val, opts);
    }
    next();
  };
};

上面的作用是用来解析url的吧,但是当没有使用express.query()这个中间件的时候,req.query得到的结果还是一样的。所以产生了疑惑~~

1 回复
//application.js
var query = require('./middleware/query');
app.lazyrouter = function lazyrouter() {
  if (!this._router) {
    this._router = new Router({
      caseSensitive: this.enabled('case sensitive routing'),
      strict: this.enabled('strict routing')
    });

    this._router.use(query(this.get('query parser fn')));
    this._router.use(middleware.init(this));
  }
};

看源码默认已加载此中间件

回到顶部