익스프레스 및 몽구스를 사용한 페이지 매김
4984 단어 mongodbbeginnersjavascriptnode
내 데이터베이스에 수백 개의 제품이 있다고 상상해 보십시오. 단일 요청으로 모든 데이터를 가져오는 데 시간이 얼마나 걸립니까? 얼마나 많은 대역폭을 사용하시겠습니까? 사용자가 4G에 연결되어 있으면 어떻게 됩니까? 브라우저가 필터에 대한 프런트 엔드 코드를 실행하는 데 사용할 메모리 양은 얼마입니까?
여기에서 나는 일반적으로 수행되는 방법과 모범 사례가 무엇인지에 대한 조사(구글링)를 시작했고(MongoDB를 Mongoose와 함께 사용하고 있습니다), Mongoose를 사용하여 데이터를 요청합니다.
limit() 메소드
이 메서드는 숫자를 매개변수로 받고 한 번의 요청으로 얻을 수 있는 최대 문서 수를 설정할 수 있습니다.
skip() 메서드
이 메서드는 숫자를 매개변수로 받고 사용자가 건너뛸 문서 수를 지정할 수 있습니다. 요청 시 이 메서드는 지정한 문서
n
를 무시하고 나머지를 반환합니다.코드를 보여주세요
const getProducts= async (req, res, next) => {
try {
// We destructure the req.query object to get the page and limit variables from url
const { page = 1, limit = 10 } = req.query;
const products = await Product.find({ ...req.query })
// We multiply the "limit" variables by one just to make sure we pass a number and not a string
.limit(limit * 1)
// I don't think i need to explain the math here
.skip((page - 1) * limit)
// We sort the data by the date of their creation in descending order (user 1 instead of -1 to get ascending order)
.sort({ createdAt: -1 })
// Getting the numbers of products stored in database
const count = await Product.countDocuments();
return res.status(200).json({
products,
totalPages: Math.ceil(count / limit),
currentPage: page,
});
} catch (err) {
next(err);
}
};
}
결론
사실 제가 개발하고 있는 MERN 애플리케이션은 튜토리얼이나 과정을 따르지 않고 구축하는 첫 번째 프로젝트이며 가능한 한 적은 라이브러리와 타사 코드를 사용하려고 노력하고 있으므로 그 과정에서 배우고 있습니다. , 그리고 내가 말할 수 있는 최소한은 내가 개발자로서 성장하게 만든 많은 장애물에 이미 직면했다는 것입니다. 내가 직면한 문제와 해결 방법을 dev.to에서 최대한 많이 공유하겠습니다.
나는 아직 블로깅과 웹 개발에 익숙하지 않기 때문에 피드백이 있으면 읽고 싶습니다.
Reference
이 문제에 관하여(익스프레스 및 몽구스를 사용한 페이지 매김), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/hakimraissi/pagination-with-express-and-mongoose-pnh텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)