微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

res.advancedResults在node中,如何创建它们?

如何解决res.advancedResults在node中,如何创建它们?

你好,我是一名学生,目前正在与一些人一起从事项目 并且给了我一个有关创建advancedResults的任务。我知道这是一个中间件,而且我也了解中间件,但这对我来说是新的。

我在Google上进行了很多搜索,并试图在书籍中找到一些信息,但是找不到。

我有这段代码,它是一个AdvancedResults示例,但我听不懂。

const advancedResults = (model,populate) => async (req,res,next) => {
  let query;

  // copy req.query
  const reqQuery = { ...req.query };

  // Fields to exclude
  const removeFields = ["select","sort","page","limit"];

  // Loop over removeFields and delete them from reqQuery
  removeFields.forEach((param) => delete reqQuery[param]);

  // Create query string
  let queryStr = JSON.stringify(reqQuery);

  // Create operators ($gt,$gte,etc)
  queryStr = queryStr.replace(
    /\b(gt|gte|lt|lte|in)\b/g,(match) => `$${match}`
  );

  // Finding resource
  query = model.find(JSON.parse(queryStr));

  // Select Fields
  if (req.query.select) {
    const fields = req.query.select.split(",").join(" ");
    query = query.select(fields);
  }

  // Sort
  if (req.query.sort) {
    const sortBy = req.query.sort.split(",").join(" ");
    query = query.sort(sortBy);
  } else {
    //   Todo if no sort query exist,make a default one
    //   query = query.sort('-createdAt');
  }

  // Pagination
  const page = parseInt(req.query.page,10) || 1;
  const limit = parseInt(req.query.limit,10) || 25;
  const startIndex = (page - 1) * limit;
  const endindex = page * limit;
  const total = await model.countDocuments(JSON.parse(queryStr));

  query = query.skip(startIndex).limit(limit);

  if (populate) {
    query = query.populate(populate);
  }

  // Executing query
  const results = await query;

  // Pagination result
  const pagination = {};

  if (endindex < total) {
    pagination.next = {
      page: page + 1,limit,};
  }

  if (startIndex > 0) {
    pagination.prev = {
      page: page - 1,};
  }

  res.advancedResults = {
    success: true,count: results.length,pagination,data: results,};

  next();
};

module.exports = advancedResults;

所以我的问题是它做什么用,为什么要使用它?以及如何在node.js中创建一个? 感谢您的帮助。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。