Express JS 路由中使用 formData 获取 POST 为空

2024-03-08

我有一个表单,它使用 fetch() 到 AJAX,并在 NodeJS 上有一个路由。当 AJAX POST 命中路由时,req.body 显示一个空对象 {}。

这是代码:

// 在 app.js 中

app.use(bodyParser.json());

app.use(bodyParser.urlencoded({ 扩展: true }));

// 在 form.js 中

form.getElementById('form__option').addEventListener('submit', e => {
    e.preventDefault()
    const form = $('form')[0]
    fetch('/polls/create', {
        method: 'POST',
        body: new FormData(form)
    })
})

// 在 appRoute.js 中

exports.createPost = (req, res, next) => {
    console.log('req body', req.body)
    res.send('NOT IMPLEMENTED: pollsController createPost');
}

这里的问题是FormData将设置内容类型为multipart/form-data,哪个表达'body-parser不明白。

注意评论here https://www.npmjs.com/package/body-parser:

[body-parser] 不处理多部分主体,因为它们的复杂性和通常较大的性质。对于多部分主体,您可能对以下模块感兴趣:busboy 和 connect-busboy;多方和连接多方;强大;穆特。

换句话说,您必须使用不同的模块来处理 FormData 发送的多部分主体。我可以推荐formidable,在这种情况下,您的服务器代码将类似于:

const formidable = require('formidable')

exports.createPost = (req, res, next) => {
    var form = new formidable.IncomingForm();
    form.parse(req, (err, fields, files) => {
        console.log(fields)
        res.send('NOT IMPLEMENTED: pollsController createPost');
    }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Express JS 路由中使用 formData 获取 POST 为空 的相关文章

  • 在 Firebase 管理中验证无密码电子邮件注册

    我试图让我的应用程序的用户通过电子邮件 链接登录 无需密码 客户端 用 React Native 编写 使用 Javascript SDK 请求登录链接 如下所示 基于这个答案 https stackoverflow com questio
  • Node.js 无限循环功能,在某些用户输入时退出

    我不太明白节点在异步和循环方面到底是如何工作的 我想在这里实现的是让控制台打印出来 Command 并等待用户的输入 但在等待时我希望它运行 一些随机函数 无休止地直到用户在终端上输入 exit 感谢所有的帮助 以及可能的解释 以便我能理解
  • Mongoose/Mongodb更新返回值及错误处理

    我对 Mongodb update 的返回值以及如何处理它的错误有点困惑 我使用 Node js Express js 和 Mongoose js 作为我的 Mongodb 驱动程序 当我浏览许多教程时 我看到的错误处理的唯一方法是 示例
  • Node + Express + Nginx 未设置 Cookie

    我有一个使用 Express 的 Node 应用程序 我尝试为我的客户端设置 cookie 它在本地环境 http 上运行良好 但是一旦我投入生产 https 我就很好地收到了cookie 我可以在响应中看到它 但它没有设置 任何想法 Ng
  • 如何在托管的 VSO 构建代理中设置 Node.js 和 NPM 版本号?

    在 Visual Studio Online 中 您现在可以在生成定义的 常规 选项卡上设置生成依赖项 但是 有没有办法设置Node js和NPM的版本 托管构建代理当前似乎正在使用 Node js v0 12 7 和 NPM v2 11
  • 如何将多个域路由到多个节点应用程序?

    我习惯了典型的 Lamp Web 托管环境 您只需单击 cpanel 中的几个按钮 您的域就会被分区并映射到 htdocs 中的文件夹 我经常使用 Node js 但做同样的事情似乎并不那么简单 如果我有多个节点应用程序 并且我想将doma
  • Javascript - 从 AWS s3 存储桶读取镶木地板数据(使用快速压缩)

    In nodeJS 我正在尝试读取镶木地板文件 压缩 snappy 但没有成功 I used https github com ironSource parquetjs https github com ironSource parquet
  • 使用 Mongoose 多次查询,无需嵌套

    我正在尝试使用 node js 生成一个文档 该文档需要从 mongo 数据库运行多个不相关的数据库查询 这是我当前的代码 Data find function err results if err return next err fini
  • WebStorm已将目录中的所有文件标记为非项目文件

    WebStorm 已将我的项目子目录 根目录的服务器部分 中的所有文件标记为非项目文件 它发生在我转换到 Babel 然后又转换到 TypeScript 的过程中 我已经删除了 TypeScript 的内容 想知道这是否与该配置有关 我相信
  • 使用PM2时如何配置master进程

    我在 NodeJS 中遇到 PM2 问题 如果没有 PM2 我们总是有如下几行代码来配置主进程 if cluster isMaster master process configuration else worker process con
  • 使用 bitcoinjs-lib 发送比特币

    我正在关注 bitcoinjs 的教程https medium com orweinberger how to create a raw transaction using bitcoinjs lib 1347a502a3a wkf9g2l
  • Webpack 不包括 ProvidePlugins

    我正在开发一个小型试用 Web 应用程序 它使用 vue webpack 模板 https github com vuejs templates webpack https github com vuejs templates webpac
  • 将文件编码为 Base 64 Nodejs

    我使用下面的代码将文件编码为 Base64 var bitmap fs readFileSync file return new Buffer bitmap toString base64 我认为在文件中我们有问题 and 字符 但它很好
  • Mongoose Date.now 时间不准确

    在过去的两个小时里 我一直在抓狂 起初我以为 Moment js 是没有返回正确时间的罪魁祸首 但其实是 mongoose Date now 做了一些邪恶的事情 这是代码 const moment require moment const
  • 定期递归调用函数

    所以我想知道定期递归调用函数的更好方法 就堆栈增长和性能而言 是什么 例如 假设我想每 200 毫秒读取一次文件内容 我有以下两种方法 想知道它们是否有什么不同 方法 1 使用普通的 ols setTimeout 而不使用 process
  • 在 npm 脚本中匹配多个文件扩展名

    我有一个 npm 脚本 我想在其中匹配两者ts and tsx文件扩展名 如下所示 test mocha app test spec ts tsx 但是 上面的语法不起作用 执行此操作的正确语法是什么 你的模式是正确的 你的问题是你的 sh
  • 节点 --experimental-modules,请求的模块不提供名为的导出

    我已经安装了 Node 8 9 1 v10 5 0 中也出现同样的问题 我正在尝试在文件中使用来自 npm 包的命名导入 mjs import throttle from lodash I run node experimental mod
  • 如何将node.js管道传输到redis?

    我有很多数据要插入 SET INCR 到redis DB 所以我正在寻找pipeline http redis io topics pipelining 质量插入 http redis io topics mass insert通过node
  • 如何使用 JS 和 Chrome 控制台向频道发送 Discord 消息?

    如何使用 JS 和 Chrome 控制台在不使用 Discord API 的情况下将 Discord 消息发送到 Discord 频道 看来这是不可能的事了 打开不和谐控制台 ctrl shift i 不起作用 请参阅下面的编辑 然后进入网
  • 查找返回的 mysql 结果中的行数(nodejs)

    当使用 felixge 的 mysql for node js 时 如何向结果对象询问返回的行数 我有一个相当昂贵的查询 所以我不想运行COUNT 首先 只是为了第二次运行查询 如果是选择查询 则只需获取返回数组的长度即可 connecti

随机推荐