繁体   English   中英

如何提取主体请求node.js

[英]How to Extract body request node.js

我刚刚开始学习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
  • 内容类型:application / json

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

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

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

  1. 如何从请求中提取主体。 我试图研究“ req”,但找不到我想要的东西?
  2. 传递像这样的普通密码不好,对吗? 有什么建议要传递加密的密码(也许是sha)吗?
  3. 请求本身有问题吗?

任何旁注将对像你们这样的专家提供很多帮助:)

谢谢你们!!

如何从请求中提取主体。 我试图研究“ req”,但找不到我想要的东西?

这应该通过一个简单的req.body 来自req.body上的express文档 :“包含在请求正文中提交的键/值数据对。默认情况下,它是未定义的,并且在使用正文分析中间件(例如body-parser和multer)时填充。”

传递像这样的普通密码不好,对吗? 有什么建议要传递加密的密码(也许是sha)吗?

这个答案很好地总结了一下。 如果要可靠地加密密码提交,则需要使用https。

我阅读了评论等,并意识到您还没有找到解决方案。

我似乎无法真正找到您的实际错误,但想提供一些代码示例,它可能会帮助您自己找到它。

顺便说一句,在您发送的对象中,我不会用大写的“ U”写“ Users”,而只会写“ users”。

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

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

这应该只发送您发送的内容:-)在开始与数据库对话之前,请尝试执行此操作。 这样,您可以轻松确认发送的内容是服务器收到的内容。 希望对您有所帮助,如果您还有其他问题,我很乐意为您提供帮助。

您需要导入并需要正文解析器

npm install body-parser

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM