你好,提前感谢!
我是MERN堆栈的学生,我也刚刚开始了解MVC设计模式。
所以,我的问题是:
我尝试从Mongo集合中获取一些文档(使用Mongoose),但我的请求中包含一个限制查询(假设我只需要30个文档集合中的前5个文档)。一般来说,什么是最佳实践?您会在不同的情况下使用其中之一吗(例如,数据库有多大,作为一个想到的例子)?
大概是这样的
控制器:
getProducts() {
const { limit } = req.query;
const products = await productManagerDB.getProducts();
res.status(200).json({ success: true, limitedProductsList: products.slice(0, Number(limit))});
}
或者
就像这样:
控制器:
getProducts() {
const { limit } = req.query;
const products = await productManagerDB.getProducts(limit);
res.status(200).json({ success: true, limitedProductsList: products});
}
服务:
getProducts(query) {
try {
const limit = query? Number(query) : 0;
const products = await ProductsModel.find().limit(limit);
return products;
} catch (error) {
throw new Error(error.message)
}
}
尝试了两种方法,结果相同。我希望第二种方法更有效,因为它不会加载我不使用的所有数据,但我很好奇,如果在某些情况下,提取整个集合会更好...
1条答案
按热度按时间xesrikrc1#
正如您已经指出的,第二个查询要高效得多--尤其是当您有一个大型集合时。两个区别是:
1.大量的数据将不得不通过网络从数据库服务器流向应用程序服务器,这不仅浪费带宽,而且速度会更慢。
您可能需要完整集合的位置显然取决于使用情形