【发布时间】:2021-05-19 02:58:08
【问题描述】:
我有一个模型、用户,每个用户都有一组称为习惯的对象。
{
_id: 606f1d67aa1d5734c494bf0a,
name: 'Courtney',
email: 'c@gmail.com',
password: '$2b$10$WQ22pIiwD8yDvRhdQ0olBe6JnnFqV2WOsC0cD/FkV4g7LPtUOpx1C',
__v: 35,
habits: [
{
_id: 6081d32580bfac579446eb81,
name: 'first',
type: 'good',
days: 0,
checked: false
},
{
_id: 6081d32f80bfac579446eb82,
name: 'seconds',
type: 'bad',
days: 0,
checked: false
},
]
}
从我的客户端,我发送了一个我想从数组中删除的习惯的 id 列表,看起来像这样..
[
'6081d32580bfac579446eb81',
'6081d32f80bfac579446eb82',
]
我正在想办法删除习惯数组中的ID,只删除上面数组中发送ID的习惯。
这是我尝试过的......
router.post('/delete', validate, async (req, res) =>{
const user = await User.findById(req.user._id)
const idList = req.body.ids.checkedItems
const updatedList = user['habits'].filter(habit=> {
return !idList.includes(`${habit._id}`)
})
user['habits'] = updatedList;
try {
await user.save()
res.send(updatedList)
} catch (err) {
res.status(400).send(err)
}
})
-idList 是字符串形式的 id 数组。
-user['habits'] 从文档中访问列表,用户。
-my filter 方法只返回不包含在 idList 数组中的习惯。因为数组中的id就是要删除的。
这个解决方案显然只是普通的 javascript,我正在寻找的是是否有人知道如何使用 mongoose.js 语法来实现这一点。
我认为您可以通过在模型上使用 deleteMany 或 deleteOne 来做到这一点,但我不确定如何实现这一点。
感谢您抽出宝贵时间提供帮助或提供建议。
【问题讨论】:
标签: javascript node.js database mongodb mongoose