繁体   English   中英

在 express put 路由中使用 req.params 时出错

[英]Error using req.params in an express put route

我想使用我的 Ajax put call 发送两个值作为参数。 taskID 是 integer,taskCompleted 是 boolean。 当 taskID 为两位数时(例如 12),我的 req.params 显示:

{ id: 1, completed: 2false }

下面是 Ajax 调用和我拥有的 put 路由。 我想了解如何发送参数,以便我的 taskID 和 taskCompleted 不会分开。

 $.ajax({
        method: 'PUT',
        url: '/list/' + taskID + taskCompleted
router.put( '/:id:complete', ( req, res ) =>{
    console.log( 'in router.put:', req.params );
    let queryString;
    if ( req.params.complete == 'true' ){
        queryString = `UPDATE "tasks" SET "completed" = false WHERE "id" = $1`;
    }else {
        queryString = `UPDATE "tasks" SET "completed" = true WHERE "id" = $1`;
    }
    pool.query( queryString , [req.params.id]).then( (results) =>{
        res.sendStatus( 200 );
    }).catch( (err) =>{
        res.sendStatus( 500 );
        console.log( err );
    })
})//end router.put

您需要在路由的定义中用斜杠分隔这两个值,即使其成为router.put('/:id/:complete')以使其正常工作。

如果您将completed的参数作为请求正文的一部分发送会更好,因为正文用于此目的,而 url 标识您要更新的资源。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM