javascript - 循环过滤express和mongoose中的数据
问题描述
我有一个 Node.js、Express 和 Mongoose 的后端。我正在尝试过滤嵌套在对象深处的文档数组,但由于某种原因我无法访问该数组。该路线req
有一个登录用户的附加文档。下面是我的代码。
router.post("/users/:id/accept", auth, async (req, res) => {
try {
// this filter is not working
await req.user.friendRequests.filter((usr) => usr.owner !== req.params.id);
await req.user.save();
res.send("Accepted")
} catch (error) {
res.status(400).send(error.message);
}
});
如果console.log(req.user)
我得到:
{
dateOfBirth: { date: 28, month: 'Sep', year: 2002 },
gender: 'male',
cover: null,
_id: 5f71c0674a54b03e70fcbe97,
firstName: 'jake',
lastName: 'sulli',
email: 'hello2@gmail.com',
friendRequests: [
_id: 5f71c1184a54b03e70fcbea0,
owner: '5f71c0d14a54b03e70fcbe9b',
friend: false,
name: 'mad max'
},
{
_id: 5f76a7872b21c8208f3caa5f,
owner: '5f742182931ab9125bc2ec9d',
friend: false,
name: 'shriya rai'
},
{
_id: 5f76f6fa85e74758e76cb1ec,
owner: '5f76f541ab7a1255dc78987d',
friend: false,
name: 'dara singh'
}
],
}
如果可以,我无法获得friendRequests
数组,console.log()
但我可以获得name
,email
和gender
. 我想要实现的是,如果friendRequests.owner === req.params.id
我想从数组中删除该对象。
解决方案
friendRequests
您的阵列存在一些问题。
首先,您没有正确开始或结束您的对象。
friendRequests: [
{ <=========================== Need another bracket
_id: 5f71c1184a54b03e70fcbea0,
owner: '5f71c0d14a54b03e70fcbe9b',
friend: false,
name: 'mad max'
},
{
_id: 5f76a7872b21c8208f3caa5f,
owner: '5f742182931ab9125bc2ec9d',
friend: false,
name: 'shriya rai'
},
{
_id: 5f76f6fa85e74758e76cb1ec,
owner: '5f76f541ab7a1255dc78987d',
friend: false,
name: 'dara singh'
}
]
其次确保你把那些 _id 变成字符串
5f76f6fa85e74758e76cb1ec to "5f76f6fa85e74758e76cb1ec"
推荐阅读
- sql - 每个 id 的表所需的最新记录
- javascript - 量角器 - 使用他们的孩子识别元素
- helpndoc - 在 HelpnDoc 中向 CHM 项目添加自定义 CSS 内容
- php - 我想在我的协议结束日期中添加月份
- php - laravel注册后如何去掉默认邮件发送
- cross-compiling - 使用 MingW 将 Python 扩展从 Linux 交叉编译到 Win
- php - 使用 MySQL 和约束搜索匹配的标签(相似性搜索)
- java - 当依赖类存在多个 bean 时如何自动装配?
- javascript - Array.map 记录但未显示在屏幕上
- sql-server - 批量插入,无法批量加载。格式文件的未知版本