【问题标题】:Unable to read array from req.body in Nodejs express无法从 Nodejs express 中的 req.body 读取数组
【发布时间】:2026-01-09 21:45:01
【问题描述】:

我正在尝试使用 Postman 从 application/json 类型的请求中读取数组。在 Nodejs 中,我正在阅读 req.body 的值。除数组外,所有其他值都很好。数组我只得到第一个值。

这是我的数据

{   "title": "test",
    "date": "March 12 12 pm",
    "prize": "100",
    "status": "Ongoing",
    "users": ["1","2"]  
}

在 Nodejs 中我是这样阅读的

const { title, data, prize, status, users } = req.body

输出适用于我只得到 1 个但不完整的数组的用户。出了什么问题?

这是我的 app.js:

 app.use(express.json());
app.use(express.urlencoded({ extended: true }));
app.use(
  bodyParser.urlencoded({
    extended: true,
  }),
);
app.use(cookieParser());
app.use(express.static(path.join(__dirname, 'public')));

//To allow cross-origin requests
app.use(cors());

我也在使用 express-validator 来表示 body

        const { body, validationResult } = require('express-validator');
    const { sanitizeBody } = require('express-validator');
    exports.tournamentUpdate = [
      auth,
      body('title', 'Title must not be empty.')
        .isLength({ min: 1 })
        .trim(),
      body('date', 'Date must not be empty.')
        .isLength({ min: 1 })
        .trim(),

      sanitizeBody('*').escape(),
      (req, res) => {
        try {
          const errors = validationResult(req);
          const {
            title,
            prize,
            status,
            users
          } = req.body;



output  req.body.title =  test;
            req.body.prize = 100;
            req.body.users = 1; 

这里的用户我得到的值为 1,我想要整个数组 [1,2]。

【问题讨论】:

  • 你能确定 req.body 上发生了什么吗,你的解构分配是正确的。
  • 我已编辑 req.body 包含我从邮递员发送的所有属性。只有用户我得到的价值是 1 而不是数组
  • 我无法使用此代码重现:pastebin.com/FiS6bRxG

标签: javascript node.js express


【解决方案1】:

清理数组有一个开放的bug 用于您体验过的 express-validator。

当它被修复时,您可以将数组字段排除在清理之外。

  sanitizeBody("title", "date", "price", "status").escape(),

【讨论】: