如何从Mongodb [Angular]中删除数组的元素

问题描述 投票:0回答:1

此问题无法回答我的问题:Delete an element from an array of an array in MongoDb

我创建了一个非常基本的MEAN应用程序。我正在创建(或尝试创建)stackoverflow类机制。我有一篇文章有​​赞成票和反对票。这是mongodb记录的屏幕截图。有许多这样的记录:enter image description here

您可以看到upvotersdownvoters的数组。我遇到的情况是,以前对某篇文章进行了投票的当前登录用户现在想对同一篇文章进行投票。然后,他的名字应该从'upvoters'数组更改为downvoters数组。这涉及两个步骤:

  1. upvoters阵列中删除当前登录的用户
  2. downvoters数组中添加同一用户。

步骤号2我可以。但是第一步我面临着问题。这是我的代码。专注于removeUserFromUpvotersList()方法:

article.component.ts

    export class ArticleComponent implements OnInit {
      articleId : String = '';
      article;      

      currentLoggedInUserId: string;    

      updatedVotes={
        articleid: "",
        upvotes: 0,
        downvotes: 0,
        upvoters: [],
        downvoters: []
      };

      ...

      downvoted() {
        console.log("downvoted");
        this.removeUserFromUpvotersList();
      }

      removeUserFromUpvotersList() {
        this.updatedVotes.upvoters.push(localStorage.getItem('userid'));
        this._articleService.removeUserFromUpvotersList(this.updatedVotes, localStorage.getItem('userid'))
        .subscribe (
          res => {
          },
          err => console.log(err)
        );
      }
    }

article.service.ts

export class ArticleService {
  ...
  private _deleteFromUpvotersListURL = "http://localhost:3000/api/remove-from-upvoters-list";
  ...

  removeUserFromUpvotersList(updatedArticle, id) {
    return this.http.delete<any>(this._deleteFromUpvotersListURL+'/'+id, updatedArticle);
  }
}

api.ts

router.delete('/remove-from-upvoters-list/:id', (req, res) => {
    console.log("removing from upvoters list");
    let userId = req.params.id;
    let articleId = req.body.articleid;
    Article.update({ articleid: articleId }, { $pull: { upvoters: userId } }).then(opResult => console.log(opResult));
    Article.deleteOne({ userId: userId }, (error, userId) => {
        if (error) {
            console.log(error)
        } else {
            if (!article) {
                res.status(401).send('something went wrong')
            } else {
                console.log('successfully deleted');
            }
        }
    })
})

我知道我的api工作正常,因为我能够执行添加和更新操作。请帮助我删除。

angular express mean-stack
1个回答
0
投票

在前端,您调用put方法,而后端终结点是delete。在前端服务中更改为http.delete应该可以解决此问题。

© www.soinside.com 2019 - 2024. All rights reserved.