如何提取body请求node.js

我刚开始学习node.js(Express),我创build了一个简单的应用程序,与一个非常简单的mongo数据库进行通信。 我在一个名为'testDB'的数据库中有一个名为'Users'的集合。 我在我的node.js应用程序中创build了我的框架,并遵循“分离关注”逻辑。

在我的控制器文件夹中,我有一个名为usersController的子文件夹。 在该子文件夹内,有2个.js文件,一个是usersControllers.js,另一个是usersRoutes.js

在usersRoutes.js里面有以下代码:

"use strict"; var express = require('express'); var router = express.Router(); // require the controller here var usersController = require("./usersController.js")(); router .get('/', usersController.getAllUsers) .post('/', usersController.createUser); module.exports = router; 

正如你所看到的,我正在调用名为“createUser”的位于usersController.js中的函数(工厂)。 这个函数的写法如下:

 "use strict"; var MongoClient = require('mongodb').MongoClient; var usersController = function(){ var getAllUsers = function(req, res){ MongoClient.connect('mongodb://localhost/testDB', function(err, db){ if(err){ throw err; } db.collection('Users').find().toArray(function(err, doc){ if(err){ throw err; } else{ return res.status(200).json(doc); db.close(); } }); }); }; var createUser = function (req, res) { MongoClient.connect('mongodb://localhost/testDB', function(err, db){ console.log(req.body); db.close(); }); }; return { getAllUsers: getAllUsers, createUser: createUser }; }; module.exports = usersController; 

我创build了一个post man请求来研究如何提取我发送的body数据。 请求如下

在标题中,我有2个键

  • 接受:application / json; charset = UTF-8
  • 内容types:application / json

在身体中,我有以下原始文本:

 { "Users": { "First Name": "Ahmed", "Last Name": "Rahim", "Username": "rahima1", "Passwoed": "secure" } } 

基于前面的情景,我有几个问题:

  1. 如何从请求中提取正文。 我试图挖掘'请求',但我找不到我在找什么?
  2. 通过一个普通的密码,这样不好,对不对? 任何build议传递encryption的密码(也许沙)?
  3. 请求本身有什么问题吗?

任何方面的说明将帮助我很多像你们这样的专家:)

谢谢你们!!

如何从请求中提取正文。 我试图挖掘'请求',但我找不到我在找什么?

这应该用一个简单的req.body来完成。 来自req.body的快速文档 :“包含在请求体中提交的键值对的数据,默认情况下,它是未定义的,并且在使用body-parser和multer等身体分析中间件时被填充。

通过一个普通的密码,这样不好,对不对? 任何build议传递encryption的密码(也许沙)?

这个答案总结得很好。 如果您想要可靠地encryption密码提交,则需要使用https。

我读了评论等,并意识到你还没有find一个解决scheme。

我看不出真正的错误,但想提供一些代码示例,这可能会帮助你自己find它。

顺便说一下,在你发送的对象中,我不会用“U”来写“Users”,而只是写“users”。

所以,让我们说,我们有这个路由器文件,这可能是你的createUser。 它应该看起来像这样:

 router.post('createUser', function (req, res) { var users = req.body.users; res.json(users); }); 

这应该发送你刚刚发送的内容:-)在开始与数据库交谈之前,尝试并做到这一点。 这样你就可以很容易地确认你发送的是服务器接收到的内容。 希望有任何帮助,否则我很乐意为您提供帮助,如果您还有其他问题。

您需要导入并需要body-parser

 npm install body-parser 

 var bodyParser = require('body-parser'); ... app.use(bodyParser.json());