【问题标题】:How to pass to sort function req.query.sort?如何传递给排序函数req.query.sort?
【发布时间】:2021-05-08 18:05:21
【问题描述】:

我有一个应该检索排序数据的路由器, 使用节点和猫鼬

router.get('/api/users/',
async (req:Request, res:Response)=> {

const users = await User.find({}).sort();

res.send(users);

});


User.find({}).sort();

req.query.sort = ["name","DESC"] 作为 字符串 不是数组也不是对象!

我知道 sort 期望 Json 对象,但 JSON.parse() 不起作用。假设是因为方括号。

我想知道处理它的正确方法是什么?

【问题讨论】:

    标签: node.js json mongoose


    【解决方案1】:

    使用body-parser 模块,所以只需在索引文件中尝试

    const bodyParser = require("body-parser");
    app.use(bodyParser.urlencoded({ extended: false }));
    app.use(bodyParser.json());
    

    在路由器文件中:

    let item : string[]= JSON.parse(req.query.sort);
    let object = {}
    object[item[0]] = item[1];
    const users = await User.find({}).sort(object)
    

    【讨论】:

    • 谢谢,让 item = JSON.parse(req.query.sort);给出错误:'string | 类型的参数解析问题 |字符串[] | ParsedQs[] | undefined' 不能分配给'string' 类型的参数。类型“未定义”不可分配给类型“字符串”。
    • 当你运行JSON.parse(req.query.sort)时有什么错误吗?错误信息是什么?
    • 是的。错误 TS2345:类型为“字符串”的参数 |解析问题 |字符串[] | ParsedQs[] | undefined' 不能分配给'string' 类型的参数。类型“未定义”不可分配给类型“字符串”。 14 让item = JSON.parse(req.query.sort);
    • 我正在使用 typescript 可能是因为 typescript 不确定 req.query.sort 是否已定义
    • 我在网上用打字稿测试过,没有任何错误,能不能给我看看console.log(req.query.sort)的结果
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-07-10
    • 2019-06-24
    • 2013-11-06
    • 1970-01-01
    • 2014-05-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多