我有一个数据库,它具有以下结构。我需要写一个请求,将发出一个职位,由user_id和id。
id | title | content | user_id
----+----------------------------+-----------------------------+---------
字符串
这是我试过的路线,但它不起作用。
router.put('/post/:user_id&id', updatePost);
型
这是一个控制器,我不明白如何正确地传递数据的正确请求到数据库
async updatePost(req, res) {
try {
const id = req.query.id
const user_id = req.query.user_id
const {title, content} = req.body
const updatePost = await db.query(`UPDATE post SET title = $1, content = $2 WHERE id = $3 AND user_id = $4`, [title, content, id, user_id])
res.json(updatePost.rows)
} catch (err) {
console.log('Error when update a post:', err)
res.status(500).json({error: 'Something went wrong, try again later. Res status - 500'})
}
}
型
我也试试下一条路
router.put('/post/:user_id/:id', updatePost);
// But I don't understand how the controller takes the data for user_id and id
型
2条答案
按热度按时间4dc9hkyq1#
你混淆了两个不同的概念。
路由参数使用
router.put('/post/:user_id/:id'
定义,在URL中使用http://example.com/post/myUserId/myid/
发送,并显示在req.params
中。query stringnotdefined in the route(
router.put('/post/',
,sent in the URL withhttp://example.com/post/?user_id=myUserId&id=myid
and appear inreq.query
.jtoj6r0c2#
基本上就是昆汀的回答。Express on node是一个非常有用的系统,也是一个易于构建的系统。
您应该决定如何构造此路由、查询参数或路由参数。
这是路由参数的答案
字符串