I got an "interesting" issue when trying to add a new user using my API... I get the following error, even though the required fields are submitted. I can't really figure out why. I've added the relevant part of the code. Thanks.
尝试使用我的API添加新用户时出现“有趣”问题...即使提交了必填字段,我也会收到以下错误。我无法弄清楚原因。我添加了代码的相关部分。谢谢。
$ curl -v http://localhost:3000/api/users --data "{ 'user_name':'xsa', 'email':'foo@bar.baz' }"
The error:
错误:
{"errors":{"email":{"message":"Path `email` is required.","name":"ValidatorError","properties":{"message":"Path `{PATH}` is required.","type":"required","path":"email"},"kind":"required","path":"email","$isValidatorError":true}},"_message":"User validation failed","message":"User validation failed: email: Path `email` is required.","name":"ValidationError"}
models/user.js
车型/ user.js的
[...]
user_name: {
type: String,
lowercase: true,
required: true,
index: {
unique: true
},
trim: true,
min: 3,
max: 8
},
email: {
type: String,
lowercase: true,
required: true
},
[...]
routes/user.js
路线/ user.js的
router.post('/users', (req, res, err) => {
var user = new User(req.body);
user.save()
.catch((err) => {
res.send(err);
});
});
1 个解决方案
#1
0
You have this:
你有这个:
var user = new User(req.body);
Change to this:
改为:
var user = new User();
user.name - req.body.name;
user.email = req.body.email;
Edit: Here is HTML form:
编辑:这是HTML表单:
<div>
<form method="post" action="/users/save">
<div>
<label>Name</label>
<input type='text' required name="userName"/>
</div>
<div>
<label>Email</label>
<input type='text' required name="email"/>
</div>
<input type="submit" class="submit btn btn-primary" value="Save">
</form>
</div>
When user presses submit button, your req.body is send neatly to your router. You will have req.body.userName and req.body.email waiting for you.
当用户按下提交按钮时,您的req.body将整齐地发送到您的路由器。您将有req.body.userName和req.body.email等着您。
I removed a lot of CSS to make it easier to read. Apply your own styling as desired.
我删除了很多CSS以便于阅读。根据需要应用您自己的样式。
#1
0
You have this:
你有这个:
var user = new User(req.body);
Change to this:
改为:
var user = new User();
user.name - req.body.name;
user.email = req.body.email;
Edit: Here is HTML form:
编辑:这是HTML表单:
<div>
<form method="post" action="/users/save">
<div>
<label>Name</label>
<input type='text' required name="userName"/>
</div>
<div>
<label>Email</label>
<input type='text' required name="email"/>
</div>
<input type="submit" class="submit btn btn-primary" value="Save">
</form>
</div>
When user presses submit button, your req.body is send neatly to your router. You will have req.body.userName and req.body.email waiting for you.
当用户按下提交按钮时,您的req.body将整齐地发送到您的路由器。您将有req.body.userName和req.body.email等着您。
I removed a lot of CSS to make it easier to read. Apply your own styling as desired.
我删除了很多CSS以便于阅读。根据需要应用您自己的样式。