我刚开始学习node.js(Express),我创建了一个简单的应用程序,它与一个非常简单的mongo数据库进行通信。我有一个名为' Users'在名为' testDB'的数据库中。我在node.js应用程序中创建了我的骨架,然后我关注了“关注点分离”。逻辑。
在我的控制器文件夹中,我有一个名为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;
正如您所看到的,我正在调用一个名为&create;' 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;
我创建了一个post man请求,以探索如何提取我发送的正文数据。请求类似于以下
在标题中我有2个键
在身体中我有以下原始文本:
{
"Users": {
"First Name": "Ahmed",
"Last Name": "Rahim",
"Username": "rahima1",
"Passwoed": "secure"
}
}
根据之前的情况,我有几个问题:
任何旁注都会帮助我很多像你这样的专家:)
谢谢大家!!
答案 0 :(得分:0)
如何从请求中提取正文。我试图深入了解“req'但我无法找到我要找的东西?
这应该通过一个简单的req.body
来完成。来自req.body
上的express docs:
"包含请求正文中提交的键值对数据。默认情况下,它是未定义的,并在使用正文解析器和multer等身体解析中间件时填充。"
传递这样的普通密码并不好,对吗?任何传递加密密码的建议(也许是沙)?
This answer总结得很好。如果您想要可靠地加密密码提交,需要才能使用https。
答案 1 :(得分:0)
我阅读了评论等,并意识到你还没有找到解决方案。
我似乎无法找到您的实际错误,但想提供一些代码示例,可能会帮助您自己找到它。
顺便说一句,在你发送的对象中,我不会写#34;用户"资本" U",但只是"用户"。
所以我们假设我们有这个路由器文件,可能是你的createUser。看起来应该是这样的:
router.post('createUser', function (req, res) {
var users = req.body.users;
res.json(users);
});
这应该发送你发送的内容:-)在开始与数据库交谈之前尝试并执行此操作。这样您就可以轻松确认您发送的内容是服务器收到的内容。希望有任何帮助,否则如果您有其他问题,我很乐意为您提供帮助。
答案 2 :(得分:0)
您需要导入并需要body-parser
npm install body-parser
和
var bodyParser = require('body-parser');
...
app.use(bodyParser.json());