2017-09-12 3 views
2

受信されているエラーメッセージは次のとおりです。のNode.js /マングースは/ lodash - サーバーの応答:ユーザー検証が失敗しました:パス `foo`が必要とされて

「ユーザーの検証に失敗しました:電子メール:パスemailが必要とされ、 display_name:パスdisplay_nameが必要です。

返されるエラー名は、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: "[email protected]", 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の作成を指導し、自分自身でフロントエンドを構築しようとしています。

離れるオブジェクトには3つの値のペアが含まれますが、オブジェクトが到着してからサーバーがそれを変更するまでは空です。なぜ私は迷っています。

答えて

3

解決策:問題はサーバー側のbodyParserにありました。私は、エンコードされたURLメソッドを含めるのを忘れていました。それ以前のAPIはPostmanを使ってのみテストされていたため、JSONの解析は行われていませんでした。.urlencoded()メソッドを使用する必要はありませんでした。

関連する問題