Node.js 从mat选择将数据保存到数据库MongoDB

Node.js 从mat选择将数据保存到数据库MongoDB,node.js,angular,mongodb,express,Node.js,Angular,Mongodb,Express,我有收集球员和收集团队。我想给球队增加负荷球员 在创建团队的HTML中,我从玩家加载数据,用户可以选择加载玩家: <mat-form-field> <mat-select placeholder="Goalkeepers" formControlName="goalkeeper"> <mat-option *ngFor="let player of goalkeepers" [value]="player"> {{player.name

我有收集球员和收集团队。我想给球队增加负荷球员

在创建团队的HTML中,我从玩家加载数据,用户可以选择加载玩家:

<mat-form-field>
  <mat-select placeholder="Goalkeepers" formControlName="goalkeeper">
    <mat-option *ngFor="let player of goalkeepers" [value]="player">
      {{player.name}} {{player.surename}} ({{player.price}}M)
    </mat-option>
  </mat-select>
  <mat-error *ngIf="form.get('goalkeeper').invalid">Pleasse enter a goalkeeper.</mat-error>
</mat-form-field>
下面是将数据保存到数据库:

onSaveUserTeam() {
      this.userTeamsService.addUserTeam(
        this.form.value.name,
        this.form.value.goalkeeper,
        this.form.value.goalkeeper_sub,
        this.form.value.midfielder1,
          ... etc ...
      );
我将数据发送到数据库,没有错误。当我只有这些输入时:

<input matInput type="text" formControlName="goalkeeper" placeholder="UserTeam goalkeeper">
  <mat-error *ngIf="form.get('goalkeeper').invalid">Please enter a userTeam goalkeeper.</mat-error>
</mat-form-field>
这是一个问题,因为我需要同样的球员细节,比如playerID,以便以后编辑团队时使用。。。 我在将数据存储到数据库时做错了什么?
谢谢你的帮助

看起来Angular序列化对象的方式与它应该序列化的方式不同。可能您正在将表单中不正确的值传递给此方法

我建议您重构
addUserTeam
方法,以便它接受需要上传的单个对象并完全删除表单数据

addUserTeam(userTeam: UserTeam) {
    this.http.post('http://localhost:3000/api/userteams', userTeam);
}

其中,
UserTeam
是一个类/接口,它包含了屏幕截图中附加的所有属性。

它看起来像是Angle序列化对象,而不是以它应该序列化的方式。可能您正在将表单中不正确的值传递给此方法

我建议您重构
addUserTeam
方法,以便它接受需要上传的单个对象并完全删除表单数据

addUserTeam(userTeam: UserTeam) {
    this.http.post('http://localhost:3000/api/userteams', userTeam);
}

其中,
UserTeam
是一个类/接口,它包含屏幕截图中附加的所有属性。

我建议首先检查发送给服务的数据以及它是否具有正确的结构。在team.service中,我有这样一个问题:使用表单数据而不是JSON负载有什么原因吗?:)检查Chrome中的网络选项卡(或您选择的浏览器中的等效项),查看发送的实际有效负载。对不起,您的意思是,还是这个?我建议首先检查哪些数据被发送到服务,以及它是否具有正确的结构。在team.service中,我有这样一个问题:使用表单数据而不是JSON负载有什么原因吗?:)检查Chrome中的网络选项卡(或您选择的浏览器中的等效项),查看发送的实际有效负载。对不起,您的意思是,还是这个?嗯,你的意思是说,如果我使用这个函数,我是否应该移动到新类(新文件?),然后使用你推荐的函数来代替屏幕截图?我不知道,如果我做得很好,但是当我发送数据时,什么都做不了。UserTeams:要发送的函数:1。2.函数中的定义:private userteams:userteams;有什么不好的吗?当你提交这个时,网络请求是什么样子的?好吧,你的意思是,这个函数的作用是,我是否应该移动到新类(新文件?),然后使用你推荐的函数来代替屏幕截图?我不知道,如果我做得很好,但是当我发送数据时,什么也做不了。UserTeams:要发送的函数:1。2.函数中的定义:private userteams:userteams;请问什么是坏的?当您提交此文件时,网络请求是什么样子的?
addUserTeam(userTeam: UserTeam) {
    this.http.post('http://localhost:3000/api/userteams', userTeam);
}