为什么使用查询对象作为参数时.limit()会返回空数组?

问题描述 投票:0回答:1

我正在设置一个猫鼬查询,我想在其中查找自定义查询对象中提到的特定记录。此查询对象包含键值对(如果存在)。因此,如果 res.query 不包含例如限制,它不会添加到 queryObject 中。

无论出于何种原因,queryObject.limit 参数都会导致空数组。不过,当输入已分配数字的变量时,它会进行过滤。

这不起作用:

const showOneMovie = async(req,res)=>{
    try {
        const {title, publishDate, genre, skip, sort} = req.query;
        const queryObject = {};
        if(title){
            queryObject.title = title;
        }
        if(publishDate){
            queryObject.publishDate = publishDate;
        }
        if(sort){
            sort === "Ascending" ? queryObject.sort = "-title" : queryObject.sort = "title";
        }
        queryObject.limit = 2;
        let data = await Movie.find(queryObject).limit(queryObject.limit);
        res.status(200).json(data);
    } catch (error) {
        console.log(error)
    }
}

这有效:

const showOneMovie = async(req,res)=>{
    try {
        const {title, publishDate, genre, skip, sort} = req.query;
        const queryObject = {};
        if(title){
            queryObject.title = title;
        }
        if(publishDate){
            queryObject.publishDate = publishDate;
        }
        if(sort){
            sort === "Ascending" ? queryObject.sort = "-title" : queryObject.sort = "title";
        }
        const limit = 2;
        let data = await Movie.find(queryObject).limit(limit);
        res.status(200).json(data);
    } catch (error) {
        console.log(error)
    }
}

我知道我可以跳过这个问题,但我真的很想了解这种行为。

javascript node.js mongoose limit
1个回答
0
投票

因为在 queryParams 中,您获得限制的字符串数据类型,并且限制接受整数。 尝试在第一个函数中输入限制。 在第二个函数中,您使用整数作为限制,这就是第二个函数起作用的原因。

© www.soinside.com 2019 - 2024. All rights reserved.