学习 MERN Stack 第 39 天
我正在进行 MERN stack 学习之旅的第 39 天。
昨天我学习了 GET 和 POST 等 HTTP 方法。今天我专注于后端操作。我学习了服务器如何处理数据流(data streams)和请求体解析(body parsing)。
当用户发送表单或文件时,服务器并不会一次性接收全部内容。数据是以小块的形式到达的。这些小块被称为 chunks。
Node.js 使用 streams(流)来节省内存。它不会立即将大文件加载到服务器内存中,而是将数据分成小部分进行处理。
以下是该过程的工作原理:
- 传入的 POST 数据充当 Readable Stream。
- 服务器接收二进制数据的小块(chunks)。
- 在使用数据之前,你必须收集这些 chunks。
在 Node.js 中,你无法立即获取请求体(request body)。你需要监听特定的网络事件:
- req.on("data"): 每当有新的 chunk 到达时,该事件就会触发。你会将这些 chunks 保存到一个数组中。
- req.on("end"): 当流结束时触发此事件。这会告诉你所有数据都已到达。
你使用 Buffer.concat 将这些碎片拼接起来,然后将它们转换为字符串。
这种方法能保持服务器的高速和高效,并防止在处理大文件时发生内存崩溃。
来源:https://dev.to/ali_hamza_589ec7b3eb6688d/day-39-of-learning-mern-stack-hkp