【发布时间】:2017-02-23 06:56:03
【问题描述】:
我刚刚开始学习 node.js (Express),我创建了一个与非常简单的 mongo 数据库通信的简单应用程序。我在名为“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;
如您所见,我正在调用 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;
我创建了一个邮递员请求来探索如何提取我发送的正文数据。请求如下
在标题中我有 2 个键
- 接受:application/json;charset=UTF-8
- 内容类型:应用程序/json
在正文中,我有以下原始文本:
{
"Users": {
"First Name": "Ahmed",
"Last Name": "Rahim",
"Username": "rahima1",
"Passwoed": "secure"
}
}
基于前面的场景,我有几个问题:
- 如何从请求中提取正文。我试图深入研究'req' 但我找不到我要找的东西?
- 传递这样的普通密码并不好,对吧?任何 建议传递加密密码(可能是 sha)?
- 请求本身有问题吗?
任何旁注都会从像你们这样的专家那里得到很多帮助:)
谢谢大家!!
【问题讨论】:
-
首先,最好每次做一个问题。二、到底是什么问题?
-
我正在尝试发送邮递员请求 (POST),然后在节点中我尝试获取我发送的正文请求
-
1.您需要bodyparser 来获取数据。 2. 密码可以明文发送。
-
好的..我会看看bodyparser的东西..这是我需要的东西(它是一个模块)吗?如何包含它?
-
是的,它是一个模块,不,它不是必需的,您可以编写自己的代码,但如果您希望数据自动填充到
req.body,它是必需的。
标签: javascript json node.js mongodb postman