首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MERN中的排序

MERN中的排序
EN

Stack Overflow用户
提问于 2021-05-16 14:56:05
回答 1查看 309关注 0票数 0

Idea:我想在多种条件下对我的产品进行排序,如按createdAt或asce排序,按价格排序等等。发布:两者都运行良好,但我如何检查用户的要求,需要排序哪些产品,或者我们需要按createdAt或价格排序。

这是密码。

代码语言:javascript
复制
    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 //排序的产品//但我需要有价格

EN

回答 1

Stack Overflow用户

发布于 2021-05-16 15:04:17

您可以在执行之前进行检查。

喜欢

代码语言:javascript
复制
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 });
      }
    };

您必须在查询中传递sortField。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67558110

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档