Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/39.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 Node.js/Mongoose/lodash-服务器响应:用户验证失败:需要路径'foo'_Javascript_Node.js_Express_Mongoose_Lodash - Fatal编程技术网

Javascript Node.js/Mongoose/lodash-服务器响应:用户验证失败:需要路径'foo'

Javascript Node.js/Mongoose/lodash-服务器响应:用户验证失败:需要路径'foo',javascript,node.js,express,mongoose,lodash,Javascript,Node.js,Express,Mongoose,Lodash,正在接收的错误消息是: “用户验证失败:需要电子邮件:路径电子邮件,需要显示\u名称:路径显示\u名称。” 返回的错误名称为:ValidationError ajax调用的代码是: function submit_new_user(display_name, email, password){ let user_data = new New_User(display_name, email, password); console.log(user_data); $.ajax ({ dat

正在接收的错误消息是:

“用户验证失败:需要电子邮件:路径<代码>电子邮件,需要显示\u名称:路径<代码>显示\u名称。”

返回的错误名称为:ValidationError

ajax调用的代码是:

function submit_new_user(display_name, email, password){
let user_data = new New_User(display_name, email, password);
console.log(user_data);
$.ajax ({
    dataType: 'JSON',
    data: user_data,
    method:'POST',
    url: 'http://localhost:3001/user',
    success: (res)=>{
        console.log(res);
    },
    error: (xhr, ajaxOptions, thrownError)=>{
        console.log(xhr, ajaxOptions, thrownError);
    }
});
})

上面看到的console.log打印:

New_User {display_name: "test", email: "test@test.com", password: "Passw0rd"}
服务器路由为:

app.post('/user', (req, res)=>{
    let body = _.pick(req.body, ['display_name', 'email', 'password']);
    let user = new User(body);
    user.save().then(()=>{
         return user.generateAuthToken();
    }).then((token)=>{
         res.header('x-auth', token).send(user);
    }).catch((err)=>{
         res.status(400).send(err);
    });
});
当与邮递员ping时,此路线有效。服务器支持cors

模型如下:

 var UserSchema = new mongoose.Schema({
     display_name: {
        type: String,
        unique: true,
        required: true,
        validate: {
            validator: (val)=>{
                 return /^[\w\s]+$/.test(val);
            },
            message: '{VALUE} is not a valid display name. Only 
  alphanumeric, upper and lower case characters are allowed.'
        }
     },
     email: {
        type: String,
        required: true,
        unique: true,
        validate: {
            validator: validator.isEmail,
            message: '{VALUE} is not a valid email.'            
        }
    },
    password: {
        type: String,
        require: true,
        minlength: 6
    },
    tokens: [{
        access:{
            type: String,
            required: true
        },
        token: {
            type: String,
            required: true
        }
    }]
});
我还在学习node.js。我在API的创建过程中得到了指导,我正试图自己构建一个前端


离开的对象包含三个值对,但在服务器更改它之前到达的对象是空的。我不知道为什么

解决方案:问题出在服务器端bodyParser中。我忘了包含编码的url方法。它没有解析JSON,因为在此之前,API只使用Postman进行测试,不需要使用.urlencoded()方法