最新消息: 电脑我帮您提供丰富的电脑知识,编程学习,软件下载,win7系统下载。

无法拼接mongoose文件密钥

IT培训 admin 6浏览 0评论

无法拼接mongoose文件密钥

我试图从一个看起来像这样的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.
       }
    };
})
回答如下:

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

doc.keywords = doc.keywords.filter((key) => key.value === 1);

无法拼接mongoose文件密钥

我试图从一个看起来像这样的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.
       }
    };
})
回答如下:

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

doc.keywords = doc.keywords.filter((key) => key.value === 1);

与本文相关的文章

发布评论

评论列表 (0)

  1. 暂无评论