Javascript 如何提取body request node.js
我刚刚开始学习node.js(Express),我创建了一个简单的应用程序,可以与一个非常简单的mongo数据库进行通信。我在一个名为“testDB”的数据库中有一个名为“Users”的集合。我在node.js应用程序中创建了框架,并遵循“关注点分离”逻辑 在我的控制器文件夹中有一个子文件夹,名为usersController。在该子文件夹中,有2个.js文件,一个是UsersController.js,另一个是usersRoutes.js 在usersRoutes.js中有以下代码:Javascript 如何提取body request node.js,javascript,json,node.js,mongodb,postman,Javascript,Json,Node.js,Mongodb,Postman,我刚刚开始学习node.js(Express),我创建了一个简单的应用程序,可以与一个非常简单的mongo数据库进行通信。我在一个名为“testDB”的数据库中有一个名为“Users”的集合。我在node.js应用程序中创建了框架,并遵循“关注点分离”逻辑 在我的控制器文件夹中有一个子文件夹,名为usersController。在该子文件夹中,有2个.js文件,一个是UsersController.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;
如您所见,我正在调用usersController.js中名为“createUser”的函数(工厂)。此函数的编写方式如下所示:
"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;
我创建了一个post man请求,以探索如何提取我发送的身体数据。请求如下所示
在标题中,我有两个键
- 接受:application/json;字符集=UTF-8
- 内容类型:application/json
{
"Users": {
"First Name": "Ahmed",
"Last Name": "Rahim",
"Username": "rahima1",
"Passwoed": "secure"
}
}
根据前面的场景,我有几个问题:
req.body
来完成。从请求主体上的
包含请求正文中提交的数据的键值对。默认情况下,它是未定义的,并且在使用正文解析中间件(如正文解析器和multer)时填充
像那样传递普通密码是不好的,对吗?有没有关于传递加密密码(可能是sha)的建议
总结得很好。如果您想可靠地加密密码提交,您需要使用https。我阅读了评论等,意识到您还没有找到解决方案
我似乎不能真正找到您的实际错误,但我想提供一些代码示例,这可能有助于您自己找到它
顺便说一句,在你发送的对象中,我不会用大写字母“U”写“Users”,而只写“Users”
假设我们有这个路由器文件,它可能是你的createUser。它应该是这样的:
router.post('createUser', function (req, res) {
var users = req.body.users;
res.json(users);
});
这应该发送您已经发送的内容:-)在开始与数据库对话之前,请尝试这样做。这样,您就可以很容易地确认您发送的内容就是服务器接收的内容。希望能对您有所帮助,否则如果您还有其他问题,我很乐意为您提供帮助。您需要导入并要求
及
首先,最好每次提出一个问题。第二,到底是什么问题?我试图发送一个邮递员请求(POST),然后在节点中,我试图获取我发出的身体请求1。你需要一个新的方法来获取数据。2.可以以明文形式发送密码。好的。。我来看看这个东西。。这是我需要的东西吗(是一个模块)?如何包含它?是的,它是一个模块,不,它不是必需的,您可以编写自己的代码,但是如果您想在req.body
中自动填充数据,它是必需的。我尝试了req.body,但它给了我未定义的。。这就是为什么我决定发布这个问题:)啊,我看到你在使用req.body。。。我想我忽略了这一点。结果是否未定义?我不确定你有什么问题。。当我调用req.body。。出于某种原因,它会给我“未定义”:(是的,对不起,这是我的错。我猜你的请求中有问题。可能你没有发送POST请求?如果请求正确,基本上可以神奇地工作。这是真的。它应该工作。我确保我的请求类型是“POST”,url是正确的。但是,我不知道主体样式是否正确。。我应该在“原始”上选择“表单数据”吗
npm install body-parser
var bodyParser = require('body-parser');
...
app.use(bodyParser.json());