Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/38.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript NodeJS第一个res.body对象在引用中_Javascript_Node.js_Mongodb_Express - Fatal编程技术网

Javascript NodeJS第一个res.body对象在引用中

Javascript NodeJS第一个res.body对象在引用中,javascript,node.js,mongodb,express,Javascript,Node.js,Mongodb,Express,我还没有在网上找到解决这个问题的方法 我正在学习一门在线课程,并使用MERN stack创建一个社交媒体网站。我遇到了一个问题,无法将用户注册到此应用程序 这些文件很大,我将在下面展示一些相关代码 在Postman中,我向适当的路由(localhost:5000/api/users/register)发出POST请求,并使用所需的所有适当密钥(名称:Coop,电子邮件:something@email.com,密码:stoplookingatmypassword,密码2:stoplookingat

我还没有在网上找到解决这个问题的方法

我正在学习一门在线课程,并使用MERN stack创建一个社交媒体网站。我遇到了一个问题,无法将用户注册到此应用程序

这些文件很大,我将在下面展示一些相关代码

在Postman中,我向适当的路由(localhost:5000/api/users/register)发出POST请求,并使用所需的所有适当密钥(名称:Coop,电子邮件:something@email.com,密码:stoplookingatmypassword,密码2:stoplookingatmypassword)

当我发送post请求时,我得到了以下响应

{
    "name": "Name field is required",
    "email": "Email field is required"
}
我在这里的代码中添加了一些console.logs来查看问题所在,因为我有我需要的所有东西,email字段和name字段都在那里。下面是我路线的开始

router.post('/register',(req,res) => {
    console.log(req.body);

    const {errors, isValid } = validateRegisterInput(req.body);
    console.log(req.body);
    //Check Validation
    if(!isValid) {
        return res.status(400).json(errors);
    } 
第一个console.log为我提供了这个输出

{ 'name ': 'Coop',
  email: 'something@email.com',
  password: 'stoplookingatmypassword',
  password2: 'stoplookingatmypassword' }
第二个console.log为我提供了这个输出

{ 'name ': 'Coop',
  email: 'something@email.com',
  password: 'stoplookingatmypassword',
  password2: 'stoplookingatmypassword',
  name: '' }
显然,这是一个巨大的问题,在查看了我的用户模式和验证功能后,我不知道为什么名字会被引用,这个问题阻碍了我继续下去,我无法在网上找到任何解决方案。任何有帮助的事情和建议都会大有帮助,谢谢你的时间

问题:

'name ': 'Coop'
下面是validateRegisterInput()函数供参考

const Validator = require('validator');
const isEmpty = require('./is-empty');

module.exports = function validateRegisterInput(data) {
    let errors = {};

    data.name = !isEmpty(data.name) ? data.name : '';
    data.email = !isEmpty(data.email) ? data.email : '';
    data.password = !isEmpty(data.password) ? data.password : '';
    data.password2 = !isEmpty(data.password2) ? data.password2 : '';



    if(!Validator.isLength(data.name, { min: 2, max: 30})) {
        errors.name = 'Name must be between 2 and 30 characters';
    }

    if(Validator.isEmpty(data.name)) {
        errors.name = 'Name field is required';
    }

    if(!Validator.isEmpty(data.email)) {
        errors.email = 'Email field is required';
    }

    if(!Validator.isEmail(data.email)) {
        errors.email = 'Email is invalid';
    }

    if(Validator.isEmpty(data.password)) {
        errors.password = 'Password field is required';
    }

    if(!Validator.isLength(data.password, { min: 6, max: 30})) {
        errors.password = 'Password must be at least 6 charachters';
    }

    if(Validator.isEmpty(data.password2)) {
        errors.password2 = 'Confirm password field is required';
    }

    if(!Validator.equals(data.password, data.password2)) {
        errors.password2 = 'Passwords must match';
    }

    return {
        errors,
        isValid: isEmpty(errors)
    };
};

请求正文中的第一个属性键是引号,因为第一个属性是
name
,在属性名称的末尾有一个尾随空格字符。因为这是一个有效的属性名,但不是有效的变量名,所以它会用引号转义属性名

我的上帝从来没有注意到这一点,谢谢你分享这些知识。我必须通过测试才能相信哈哈哈。哇,我只是浪费了一个半小时的时间在地狱里,然后回到我的代码中,才明白这一点。非常感谢你的帮助,这对我来说意义重大。