node.js - 必须根据匹配的 req.params.id 删除对象的 ID
问题描述
router.delete('/shopping-cart/:id', (req, res) => {
let cart = new Cart(req.session.cart);
console.log(req.params.id);
console.log(cart.generateArray());
});
console.log 将输出以下结果(req.params.id):
5c863cc8ee0819f989acf9c3
console.log 将输出以下结果(cart.generateArray()):
[ { item:
{ _id: '5c863cc8ee0819f989acf9c3',
imagePath: 'https://upload.wikimedia.org/wikipedia/en/5/5e/Gothiccover.png',
title: 'Gothic Video',
description: 'Absolutely stunning',
price: 10,
__v: 0 },
image: 'https://upload.wikimedia.org/wikipedia/en/5/5e/Gothiccover.png',
qty: 1,
price: 10,
id: '5c863cc8ee0819f989acf9c3' } ]
那么如何循环遍历所有项目并检查 id 是否与 req.params.id 匹配。如果是这种情况,它应该删除该对象,然后在客户端返回一个更新的数组。
解决方案
我假设那来自cart.generateArray()
?
如果是这样,您可能应该在相关函数中执行此操作,但如果您不能,则只需将结果映射到一个新数组:
let result = cart.generateArray().map(item => {
const {id, ...entry} = item;
// if you want to also remove _id from the inner item, you can do the same
return entry;
});
console.log(result); // will have entries w/o id in them.
如果您还想删除嵌套item
对象,这是 smae 方法,尽管我会更改一些单词以提高可读性。
let result = cart.generateArray().map(cartItem => {
const {id, item, ...entry} = cartItem;
// this will remove both the id and the item keys
return entry;
});
console.log(result); // will have entries w/o id in them.
推荐阅读
- sql - 收藏中最昂贵的电影的成本是多少?
- php - 无法在 laravel 5.4 中显示数据 php 调试栏
- java - 为什么我无法将此值从这个方法传递给 Android Studio 中的这个其他方法?
- z3 - 舍入浮点数比较问题
- nuxt.js - 覆盖默认的 vue-formulate snow.scss 主题
- python - python中的Spacy安装错误,使用pip命令
- angular - 为什么在观察者中调用下一个函数以及何时调用错误函数?
- powershell - 如何使用 selenium powershell 实现显式等待
- r - 根据一列中的值将所有列的行放在一起
- javascript - 使用 Web 共享目标 API 时避免重新加载 PWA