У меня есть веб-сайт с несколькими списками и кнопкой наблюдения, которая должна добавить запись в MongoDB для этого пользователя в качестве элемента наблюдения и удалить ее при повторном нажатии кнопки.
Проблема заключается в том, чтонезависимо от того, какая кнопка наблюдения нажата в любом списке, добавляется и удаляется только по одному. Если я нажимаю addToWatchList()
для листинга № 1, а затем нажимаю addToWatchList()
для листинга № 2, он удаляет листинг № 1 из списка наблюдения в MongoDB. Интерфейс передает идентификатор определенного идентификатора листинга, который используется для генерации уникального ключа в addToWatchList
и для deleteWatchListItem()
и addToWatchList()
addToWatchList(auctionId: string) {
this.watchItStatus = true;
this.userId = localStorage.getItem("userId: ");
this.watchItemUniqueKey = this.userId + "|" + auctionId;
this.watchListService.getWatchList(this.watchItemUniqueKey).subscribe((response) => {
this.watchListItems = JSON.stringify(response);
let substring = '"watchItems":null';
let watchItemDoesntExist = this.watchListItems.includes(substring);
if (!watchItemDoesntExist) {
this.watchListService.deleteWatchListItem(auctionId);
}
else if (watchItemDoesntExist) {
this.watchListService.addToWatchList(auctionId, this.watchItemUniqueKey);
}
if (this.watchListItems.includes("null")) {
console.log("It's already active");
this.watchListService.watchListItemActive = false;
} else if (!this.watchListItems.includes(auctionId)) {
console.log(this.watchListItems);
}
});
this.watchButtonValue = "Remove from Watch List"
}
app.js
app.delete("/api/watchings/:watchItemUniqueKey", (req, res, next) => {
Post.deleteOne({"value": {$eq: req.query.watchItemUniqueKey}}).then(result => {
console.log(result);
res.status(200).json({message: "Watch Item deleted!"})
})
app.get("/api/watchings/:watchItemUniqueKey", (req, res, next) => {
Watching.findOneAndDelete({"value": req.query.watchItemUniqueKey})
.then(documents =>{
res.status(200).json({
message: "Watchlist Item Retrieved",
watchItems: documents,
});
});
});
watch-list.service.ts
getWatchList(watchingId) {
watchingId = watchingId.trim();
return this.http.get<{ }>(
'http://localhost:3000/api/watchings/' + watchingId
); }