【问题标题】:HttpErrorResponse Error in posting data using angular formbuilder.groupHttpErrorResponse 使用 Angular formbuilder.group 发布数据时出错
【发布时间】:2019-03-05 14:26:01
【问题描述】:

我正在尝试从输入字段向 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);

});

所以我不确定是否有角formGroup错位的东西 或我的 express.js api。

【问题讨论】:

  • validateUser的分享代码
  • 方法validateUser在服务器端。 validateUser 返回错误,这就是为什么我想看看里面有什么
  • 谢谢Vadi,我查看了那个方法,发现了问题。

标签: angular forms http post request


【解决方案1】:

问题出在我的 express.js 中,如 Vaid 所提到的 validateUser 方法。 我没有在该方法中包含用户名和电子邮件,这就是我遇到错误的原因

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-09-15
    • 2015-06-03
    • 2021-01-21
    • 1970-01-01
    • 1970-01-01
    • 2011-08-27
    • 2018-03-10
    相关资源
    最近更新 更多