【发布时间】:2020-05-27 07:00:39
【问题描述】:
我是一个完整的 MERN 新手!我需要使用 mongoose 清除 mongo 文档中数组的所有对象。我找到的大多数答案只会根据给定的条件删除部分数组,但我想清除整个数组,以便我可以从用户输入中重新填充它。
文档:
"_id": {
"$oid": "5e3ff34551c1a940d23251d1"
},
"inter": {
"significantEvents": []
},
"vigDataset": {
"vigMovt": [
{
"Time": 2,
"movt": 3
},
{
"Time": 4,
"movt": 5
},
{
"Time": 6,
"movt": 8
},
{
"Time": 8,
"movt": 8
},
{
"Time": 9,
"movt": 9
},
{
"Time": 5,
"movt": 5
},
{
"Time": 10,
"movt": 4
},
{
"Time": 5,
"movt": 6
},
{
"Time": 9,
"movt": 6
},
{
"Time": 12,
"movt": 3
}
]
这是我在快递服务器上尝试过的,但没有成功:
parRouter.route('/cleargraph/:parId')
.put((req, res, next) => {
Par.findByIdAndUpdate(req.param.parId, {
$pull: {"vigDataset.vigMovt"}
})
.then((par) => {
res.statusCode = 200;
res.setHeader('Content-Type', 'application/json');
res.json(par);
}, (err) => next(err))
.catch((err) => next(err));
})
这是来自 React 端:
handleClearGraph =(e)=> {
Axios.put(baseUrl + `par/cleargraph/${this.props.par._id}`)
.then(response => {
console.log( response)
})
【问题讨论】:
-
它不起作用,但我觉得问题出在我设置路线的方式上,所以我想重构代码并再次尝试你的答案。谢谢
-
在 db 上试试这个查询并告诉我.. 你的代码有问题试试这个:删除
next并在(req, res) =>{之前添加async并在Par.之前添加await然后你的代码应该可以工作.. -
我刚刚在mongo shell上试了一下,还是不行,返回null
-
你尝试了什么?
-
非常感谢,在我发现我的代码问题后,它就像一个魅力!
标签: node.js mongodb express mongoose mongodb-query