2011-10-10 6 views
2

주 문서에 이미지 문서가 포함되어 있으며 다음과 같이 업데이트 할 수 있습니다. 업데이트 할 때마다 기존 이미지를 무시하고 기존 이미지에 추가하지 않습니다. "{images.push : image}"로 시도했지만 작동하지 않습니다. 구문은 무엇입니까? 문제를 설명 할 수 있는지 확실하지 않습니다. 그렇지 않다면 여기에 더 많은 정보를 추가해야하는지 알려주세요.MONGODB mongoose가 node.js에 포함 된 문서를 업데이트합니다.

var image = { 
        img  : new_file_name, 
        orig_img_name : files.source.filename, 
        caption : fields.message, 
        upload_date : new Date() 
       }; 

RentModel.update({'facebook_id':fb_id, 'prop_location.lat':lat, 'prop_location.lng':lng}, {'images':image}, function(err, docs){ 
         if(err) { 
          console.log("Error during friends update"); 
          throw err; 
         } 
         console.log('image updated to database', new_file_name); 
        }); 

답변

4

시도 포함 된 문서 find()에 먼저 다음 배열에 image를 추가합니다.

RentModel.find({'facebook_id':fb_id, 'prop_location.lat':lat, 'prop_location.lng':lng}, function (err, item) { 
    if (err) //throw ... 
    if (item) { 
     if (item.images && item.images.length) { 
      item.images.push(image); 
     } 
     else { 
      item.images = [image]; 
     } 

     // save changes 
     item.save(function (err) { 
     if (!err) { 
      // done ... 
     } 
     }); 
    } 
}); 
+0

감사합니다. 이것은 정확히 내가 뭘 찾고 있었는지 .. .. 시도 할 것입니다. 그런데, 나는 아주 기본적인 질문을하고 있습니다. 왜 "! =="대신 "! ="를 사용 했습니까? – user644745

+0

그들은 엄격했습니다. "같지 않습니다. "-하지만 그들을 삭제하고 이해하기 쉽게 코드를 변경했습니다.) – pkyeck

+0

코드가 정상입니다. "if (item.images && item.images.length) .. else {}"이미지가 필요하지 않을 수도 있습니다. 이미지에 데이터가 있는지 여부를 확인하지 않고이 작업을 수행하고 있습니다. 그냥 item.images.push (image)하고있는; 충분하고 잘 작동합니다. – user644745

관련 문제