【问题标题】:On post request req.query returns empty dictionary in express node在发布请求时,req.query 在 express 节点中返回空字典
【发布时间】:2021-07-15 11:07:39
【问题描述】:

我想获取后查询值以在数据库中创建新行。但是在 req.query 中它不起作用。我也尝试过使用 body-parser,但它也没有奏效。 代码

const storage = multer.diskStorage({
    destination: (req, file, cb) => {
        cb(null, './static/image/')
    },
    filename: (req, file, cb) => {
        const { originalname } = file;
        cb(null, originalname)
        filename = originalname;
    }
})
const upload = multer({ storage: storage })

app.post('/admin/song/create', upload.single('file'),  async(req, res) => {
    console.log(req.query)
    res.redirect('/admin')
})

还有客户端代码

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.0-beta1/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-giJF6kkoqNQ00vy+HMDP7azOuL0xtbfIcaT9wjKHr8RbDVddVHyTfAAsrekwKmP1" crossorigin="anonymous">
    <link rel="stylesheet" href="https://pro.fontawesome.com/releases/v5.10.0/css/all.css" integrity="sha384-AYmEC3Yw5cVb3ZcuHtOA93w35dYTsvhLPVnYs9eStHfGJvOvKxVfELGroGkvsg+p" crossorigin="anonymous"/>
</head>
<body>
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
<style>
    input{
        margin: 10px;

    }
</style>
<div class="container" id="conT">

    <form action="/admin/song/create" method="POST" enctype="multipart/form-data">
    <input type="file" name="file" class="btn-success btn">
    <input type="text" placeholder="Name" name="name" >
    <input type="text" placeholder="Movie Or Album Name" name="movie_or_album_name" >
    <input type="text" placeholder="Description" name="description" >
    <input type="text" placeholder="URL" name="urls" >
    <input type="number" placeholder="year" name="description" >
    <button type="submit" class="btn-success btn">Submit</button>
    </form>

</div>


</body>
</html>

我也为 body-parser 设置了中间件,但它也不起作用。但它确实适用于 GET 请求。为什么它不适用于 POST 请求。 如果有人知道请回复。会有帮助的。

非常感谢

【问题讨论】:

  • 请包括您的请求,例如作为curl
  • 我不明白。实际上我是这门语言的新手,也是这个网站的新手
  • 显示客户端代码
  • 我更新了问题。请检查一下

标签: node.js express web post


【解决方案1】:

req.querydocumentation:

此属性是一个对象,其中包含路由中每个查询字符串参数的属性。

你要找的是req.body

另外,由于您似乎通过multer 使用文件上传并且可能想要访问该数据,multer documentation

Multer 向请求对象添加一个主体对象和一个或多个文件对象。 body 对象包含表单文本字段的值,文件或文件对象包含通过表单上传的文件。

由于您使用的是multer.single,因此您应该有一个req.file(单数)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-12-30
    • 2022-07-05
    • 2020-06-23
    • 2017-07-23
    • 1970-01-01
    • 2023-04-10
    • 2021-01-28
    • 2020-09-12
    相关资源
    最近更新 更多