Javascript 中有没有办法根据用户的输入过滤产品列表并删除该项目而不将其从我的数据库中删除?



我正在为企业家开发一个平台,在这个平台上,我希望新的/有抱负的企业家能够与其他更成功的企业家建立联系。我创建了一个功能,用户可以在平台上搜索其他用户并与他们联系,但我想做的是在";搜索结果";当用户点击";添加好友";按钮,朋友请求被发送到服务器端的选定个人,我希望该个人从显示的可用个人列表中删除,以向其发送朋友请求。

到目前为止,我已经创建了一个功能,用户可以向平台上的任何人发送好友请求,但我很难从搜索结果列表中删除已经收到好友请求的个人;当我点击";添加好友";在所选用户上,我的当前代码确实删除了所选个人,直到我点击";添加好友";在另一个人上,则刷新页面,并再次显示已收到好友请求的前一个人,并删除最近单击的个人。

我想让我的代码记住我已经点击过的所有个人";添加好友";并从搜索结果列表中筛选出所有用户,而不会从我的数据库中删除实际用户。有人能帮我解开这个谜吗?我已经研究了几天了,无论我对代码做了多少修改,仍然无法弄清楚。

这是我目前正在尝试做的代码:

const database = [//data from my users database];
const previousInput = [];
const userInput = req.params.id; //when I click the "add friend" button the user's id is retrieved from here.  

我试图编写一个函数,让previousInput数组记住我向其发送好友请求的以前用户的所有id,但它似乎不起作用,因为previousInput数组在任何给定的时间点都不会包含一个以上的值。

const trackHistory = () => {
previousInput.push(userInput);
for (let i = 0; i < previousInput.length; i++) {
const selectionHistory = previousInput[i];
console.log(selectionHistory);
return selectionHistory;
}
}

在这里的代码块中,我希望能够根据存储在previousInput数组中的id值过滤来自用户数据库的用户列表;但我的问题是previousInput数组拒绝在数组中存储一个以上的值,即使我每次单击";添加好友";按钮

const filteredList = database.filter(user => {
const userId = user._id.toString();
const selectionHistory = trackHistory();
if (userId !== selectionHistory) {
return user;
}
});
const users = filteredList;
res.render("searchResults", { title: "search results", users });

注意:整个项目都是用Javascript编写的。所以请只提供Javascript的解决方案,并提前感谢您的所有帮助!

您没有在函数中返回列表,而是返回在上一个列表中找到的第一个选项History。如果您打算对照所有previousList进行检查,请返回列表,并对照列表中的所有元素检查userid。

此外,我还不完全理解您的代码。previousInput是所有输入都发送到的全局变量吗?如果是这样的话,任何时候有人收到朋友请求,他们都会被隐藏起来。

相反,也许在你的数据库中存储一个无效好友请求的用户列表(已经是好友,已经发送或收到请求(,每次发送请求时都会更新这两个用户的数据库。或者,如果你真的想去做,你可以制作一个图形数据结构来存储所有的数据。然而,目前的数据结构似乎不足。

最新更新