我正在尝试将数据从输入字段发布到api-但我是这个错误-不允许用户。
HttpResponseError - username is not allowed
如果我尝试注释掉这样的代码
user.add.component.ts
this.addForm = this.formBuilder.group({
name: ['', Validators.required],
/*username: ['', Validators.required],
email: ['', Validators.compose([
Validators.required,
Validators.pattern('^[a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+.[a-zA-Z0-9-.]+$')
])], */
});
如果我只留下一个输入-名称,那么它就会发布并可以正常工作。
service.ts
createUser(us:user):Observable<user[]>{
return this.http.post<user[]>(this.apiUrl, us)
}
express.js API
app.post('/api/users', (req, res) => {
const schema = {
name: Joi.string().min(3).required(),
};
const { error } = validateUser(req.body);
if (error) return res.status(400).send(error.details[0].message);
console.log('---------------', req.body.name);
const user = {
id: users.length + 1,
name: req.body.name,
Username:req.body.username,
Email:req.body.email
};
users.push(user);
res.send(user);
});
所以我不确定是否存在一些带有角度形式的东西 或我的express.js api。
答案 0 :(得分:0)
问题是Vaid提到的validateUser方法中的express.js内部。 我没有在该方法中包含用户名和电子邮件,这就是为什么我gettint错误
function validateUser(user){
const schema = {
name: Joi.string().min(3).required(),
username:Joi.string().min(3).max(30).required(),
email: Joi.string().email({ minDomainAtoms: 2 })
};
return result = Joi.validate(user, schema);
}