HttpErrorResponse使用angular formbuilder.group

时间:2019-03-05 14:26:01

标签: angular forms http post request

我正在尝试将数据从输入字段发布到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。

1 个答案:

答案 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);
      }