从Angular发布多个复选框(数组)到NodeJS

时间:2018-06-21 09:49:51

标签: node.js angular sequelize.js

对于在NodeJS和Angular上运行的项目,我正在尝试从复选框发送包含ID(此处为名人类型)的表。该数组可以包含不确定数量的ID。我必须在服务器上进行检索才能将名人添加到媒体(电影,系列)中。

当我对发送的正文进行console.log时,我的服务器无法识别这些值(未定义)。

这是我的后端方法(来自NodeJS):

exports.addCelebritiesToMedia = (req, res) => {
    const celebritiesSubmitted = req.body;
    console.log(chalk.red.bold('LOG POST: ' + celebritiesSubmitted.celebritiesId));
    Media.findOne({
        where: {
            id: req.params.mediaId
        },
        include: [{
            model: Celebrity,
            through: {
                attributes: ['c_firstname']
            }
        }]
    }).then(media => {
        const mediaTemp = media;
        Celebrity.findAll({
            where: {
                id: celebritiesSubmitted.celebritiesId
            }
        }).then(celebrities => {
            mediaTemp.addCelebrities(celebrities).then(() => {
                res.json({
                    message: 'Célébrités ajoutées au média !',
                    celebrities
                })
            })
        }).catch((err) => {
            error: err
        })
    })
};

我的服务(来自Angular):

postCelebritiesToMedia(mediaId: number, celebritiesId: Celebrity[]) {
    console.log(celebritiesId);
    this.http
      .post(
        `${this.apiUrl}media/addCelebritiesToMedia/` + mediaId,
        celebritiesId
      )
      .subscribe(celebrities => {
        console.log(celebrities);
      });
  }

我的组件:

onSelect(event: any) {
    const celebrityIdChecked = event.target.getAttribute('value');

    const celebrity = {
      id: celebrityIdChecked
    };

    if (event.target.checked) {
      this.celebritiesArray.push(celebrity);
    } else {
      const index = this.celebritiesArray.indexOf(celebrity);
      this.celebritiesArray.splice(index, 1);
    }
  }

  onAddCelebrityToMedia(form: NgForm) {
    if (form.invalid) {
      return;
    }

    this.isLoading = true;

    this.activatedRoute.params.subscribe(params => {
      this.mediaId = params['mediaId'];
      const mediaId = this.mediaId;
      const celebritiesId: Celebrity[] = this.celebritiesArray;
      // console.log(celebritiesId);
      this.mediaService.postCelebritiesToMedia(mediaId, celebritiesId);
    });
    form.resetForm();

    this.router.navigate(['medias']);
  }

我的服务和组件中的console.log给了我一个ID数组,但是服务器没有任何信息。我错过了什么吗?

谢谢

0 个答案:

没有答案