这个问题不能回答我的问题: Delete an element from an array of an array in MongoDb
我已经创建了一个非常基本的MEAN应用程序。我正在创建(或尝试创建)stackoverflow类机制。我有一篇文章有赞成票和反对票。这是mongodb记录的屏幕截图。有很多这样的记录:
您会看到有一个upvoters
和downvoters
数组。我遇到的情况是,以前对某篇文章进行了投票的当前登录用户现在想对同一篇文章进行投票。然后,他的名字应该从'upvoters'数组更改为downvoters
数组。这涉及两个步骤:
upvoters
数组中删除当前登录的用户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工作正常,因为我能够执行添加和更新操作。请帮我删除。
答案 0 :(得分:1)
在前端,您调用put方法,而后端终结点是delete。 在前端服务中更改为http.delete应该可以解决此问题。