Node.js MERN中的排序
Idea:我想在多种条件下对我的产品进行排序,如按createdAt按desc或asce排序、按价格排序等。 问题:两者都很好,但我如何根据用户的要求检查需要排序的内容,我们需要按createdAt或price对产品进行排序 这是代码Node.js MERN中的排序,node.js,mongodb,Node.js,Mongodb,Idea:我想在多种条件下对我的产品进行排序,如按createdAt按desc或asce排序、按价格排序等。 问题:两者都很好,但我如何根据用户的要求检查需要排序的内容,我们需要按createdAt或price对产品进行排序 这是代码 const getProducts = async (req, res) => { try { const sortQuery = req.query.sort; console.log(sortQuer
const getProducts = async (req, res) => {
try {
const sortQuery = req.query.sort;
console.log(sortQuery);
const productMessages = await productMessage
.find({})
.sort({
createdAt: sortQuery,
price: sortQuery,
})
.populate("categoryId")
.exec();
// const productMessages = await productMessage.find();
res.status(201).json(productMessages);
} catch (error) {
res.status(404).json({ message: error.message });
}
};
在这里,如果我发送查询以按价格对产品进行排序,它将给出按createdAt而不是按价格排序的产品的结果
输入:1//按价格对产品进行排序
输出:按createdAt/排序的产品,但我需要使用价格,您可以在执行前进行检查 像
您必须在查询中传递sortField。您应该只查询一次数据,然后将其呈现为按任意值排序。
const getProducts = async (req, res) => {
try {
const sortQuery = req.query.sort;
console.log(sortQuery);
let sortObject = {};
if (req.query.sortField == "createdAt") {
sortObject["createdAt"] = sortQuery
} else if (req.query.sortField == "price") {
sortObject["price"] = sortQuery
}
const productMessages = await productMessage
.find({})
.sort(sortObject)
.populate("categoryId")
.exec();
// const productMessages = await productMessage.find();
res.status(201).json(productMessages);
} catch (error) {
res.status(404).json({ message: error.message });
}
};