2017-12-27 4 views
0

키 몽구스 문서 스플 라이스 할 수 없습니다 : 여기내가 같이 다소 보이는 몽구스 문서에서 Nodejs 및 익스프레스 키워드를 제거하려고

{ 
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. 
     } 
    }; 
}) 

답변

0

스플 라이스는 객체의 배열 작동하지 않습니다. 이에 대한 해결책은 Remove Object from Array using JavaScript을 참조하십시오. 그렇지 않으면 다른 방법을 제안합니다. 다음과 같은 키워드를 필터링하면됩니다.

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

이유는 내가 개체의 설명을 업데이트하고 있기 때문입니다. 개체의 설명이 키워드로 만들어 지므로 이전 설명 키워드를 바꿔야합니다. –

+0

그런 다음 keywords.map을 사용 하시겠습니까? 샘플에 따르면 키워드 배열에서 일부 항목을 제거하려고합니다. –

+0

지도는이 경우 유용하지 않습니다. 배열에서 요소를 찾아 삭제해야하는데 제대로 작동하지 않습니다. 그러나 링크 된 객체 배열 제거 응답은 .splice()를 사용할 수 있다고 말합니다. node.js 또는 mongoose 때문에 내 경우에는 작동하지 않습니까? –

관련 문제