node.js - 无法从数组中提取记录
问题描述
我正在尝试使用 Mongoose 'pull' 从对象数组中删除一个项目。我得到一个 200 的状态码,显然一切都很好,但实际上并没有删除记录?mongo db 中的 userId 如下所示:
用户 ID:对象 ID(“6b275260a6g58308e510721b”)
exports.putDislike = (req, res, next) => {
const productId = req.body.productId;
const userId = req.body.userId;
Product.findById(productId)
.then(product => {
if (!product) {
return next(new Error('Product not found.'));
}
product.requests.pull(userId)
return product.save()
.then(result => {
res.status(200).json({ message: "Item request removed." });
})
})
.catch(err => {
res.status(500).json({ message: "Removing request failed." });
});
};
解决方案
我不确定您是否正确使用 pull,请查看此链接https://docs.mongodb.com/manual/reference/operator/update/pull/
据此,我认为您的代码应该类似于下面的示例:
exports.putDislike = (req, res, next) => {
const productId = req.body.productId;
const userId = req.body.userId;
Product.update(
{ "_id": productId },
{ $pull: { requests: {userId: userId} } })
.then(result => {
res.status(200).json({ message: "Item request removed." });
})
.catch(err => {
res.status(500).json({ message: "Removing request failed." });
});
};
推荐阅读
- html - 用户参数不使用boostrap多选下拉菜单将数据作为rails中的数组
- reactjs - 我如何获取类型以及 prop-types 包中是否需要该道具?
- javascript - 如何处理函数文档
- ios - 运行时 ivars 和关联对象的内存
- android - Android与onclick()的双向数据绑定不起作用
- csv - 使用 utf-16 编码的分隔符
- java - 从 java 客户端和服务器模拟 Zeroc Ice RPC 实现
- python - 如何从python中的几个正在运行的进程中读取输出?
- c - 有效设置数字 N 中的 X 位,从 MSB 的位置 P 开始
- json - 如何使用 N 个子对象解析 JSON