【问题标题】:Angular post request sending empty body to node.js serverAngular 发布请求将空正文发送到 node.js 服务器
【发布时间】:2020-09-17 19:22:48
【问题描述】:

我正在尝试将表单数据从 angular 发布到 node.js。角度发布请求发送一个空正文。 这是我的邮政路由器 提交函数是ts文件

  onSubmit( loginData ) {
if(!loginData) { return; }
this.userService.addUser( loginData as User  )
  .subscribe(user => {
    this.users.push(user);
  });

用于发布数据的服务

   addUser(user: User): Observable<User> {
    // console.log('this is '+user.email);
    const url = `${this.usersUrl}/register`;
    return this.http.post<User>(url, user).pipe(
      tap((newUser: User) => this.log(`added user w/ email=${newUser.email}`)),
      catchError(this.handleError<User>('addUser'))
    );
  }

【问题讨论】:

  • 你是如何在 nodejs 中读取数据的?
  • @MichaelD,我猜你误解了这个问题。他想将用户的数据作为正文发送以在数据库中进行条目或其他内容,因此需要发送用户对象而不是空字符串。
  • 检查浏览器调试器的网络选项卡。你能看到请求的正文吗?
  • 你能确认用户对象不是空的/未定义的吗?

标签: javascript node.js angular http


【解决方案1】:

我发现了问题所在。 这个角码没有问题。 我还按照 David 的建议检查了网络选项卡,并看到有效负载正在发送。 问题是我的 node.js 服务器中的这行代码

app.use(express.static('public'))

我不得不使用

app.use(exrpess.json())

我从另一个应用程序复制了模板,但不知何故错过了这个。无论如何,感谢您的帮助!

【讨论】:

    【解决方案2】:

    请通过添加调试检查 loginData 是否在服务中传递。 如果您不知道如何添加调试点,只需使用console.log(user) 打印数据即可 在方法 addUser() 中作为第一行。

    如果没有获取数据,则只需通过以下方式修改方法调用:

    this.userService.addUser(loginData).subscribe(user => {
      this.users.push(user);
        });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-06-30
      • 2012-04-03
      • 2021-06-18
      • 2020-10-01
      • 1970-01-01
      相关资源
      最近更新 更多