Javascript 如何提取body request node.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中有以下代码:

我刚刚开始学习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” 但我找不到我要找的东西
  • 像那样传递普通密码是不好的,对吗?任何 建议传递加密密码(可能是sha)
  • 请求本身是否有问题
  • 像你们这样的专家的任何旁注都会对我有很大帮助:)

    谢谢大家

    如何从请求中提取主体。我试图深入研究“req”,但我找不到我要找的是什么

    这应该通过一个简单的
    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());