【发布时间】:2020-08-19 00:53:28
【问题描述】:
这个问题没有回答我的问题: Delete an element from an array of an array in MongoDb
我创建了一个非常基本的 MEAN 应用程序。我正在创建(或尝试创建)一种 stackoverflow 机制。我有一篇文章,其中有赞成票和反对票。这是mongodb记录的截图。有很多这样的记录:
您可以看到upvoters 和downvoters 的数组。我有一个案例,以前对文章投赞成票的当前登录用户现在想要对同一篇文章投反对票。然后他的名字应该从'upvoters'数组转移到downvoters数组。这包括两个步骤:
- 从
upvoters数组中删除当前登录用户 - 在
downvoters数组中添加相同的用户。
步骤号2 我可以。但是第1步我遇到了问题。这是我的代码。关注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