无法拼接mongoose文件密钥

问题描述 投票:0回答:1

我试图从一个看起来像这样的mongoose文档中删除Nodejs和Express的关键字:

{
name: "Instagram",
description: "Image sharing website",
keywords: [{name:"Image", value: 1}, {name:"sharing", value: 1}, {name:"website"}, {name:"Instagram", value:5}, {name:"application", value: 2}]
}

这是我的更新查询的一部分似乎问题(如果有很多关键字,它不会正确删除关键字,尽管它已经使用了很少的关键字工作了几次):

Model.findOne({_id:req.body.id}, function(err,doc){
    for(var i = 0; i < doc.keywords.length; i++){
       if(doc.keywords[i].value == 1){
          doc.keywords.splice(doc.keywords[i], 1); //does nothing
          doc.save()
          console.log(doc.keywords[i]) //Shows the correct keywords to be deleted.
       }
    };
})
node.js mongodb express mongoose
1个回答
0
投票

Splice不适用于对象数组。有关可选解决方案,请参阅Remove Object from Array using JavaScript。否则我会建议一个不同的方法,你为什么不根据你的需要过滤关键字,如:

doc.keywords = doc.keywords.filter((key) => key.value === 1);
© www.soinside.com 2019 - 2024. All rights reserved.