如何解决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 举报,一经查实,本站将立刻删除。