2011-10-10 4 views
2

J'ai un document d'image incorporé dans mon document principal et je suis capable de le mettre à jour comme suit. Chaque fois qu'il met à jour, il remplace simplement l'image existante et ne l'ajoute pas aux images existantes .. J'ai essayé par "{images.push: image}", mais cela ne fonctionne pas. Quelle est la syntaxe? Je ne suis pas sûr si je suis capable d'expliquer le problème. Si non, s'il vous plaît laissez-moi savoir si je dois ajouter plus d'informations ici.MONGODB mongoose met à jour le document incorporé dans 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); 
        }); 

Répondre

4

essayer de find() le premier puis ajouter le document incorporé image au tableau.

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

Merci. c'est exactement ce que je cherchais .. vais essayer ceci .. au fait, je pose une question très simple, pourquoi avez-vous utilisé "! ==" au lieu de "! =" – user644745

+0

ils étaient strictes "pas égales "- mais je les ai enlevés et ai changé le code pour le rendre plus facile à comprendre;) – pkyeck

+0

Votre code est bon. Je pense que la vérification des images "if (item.images && item.images.length) .. else {}" peut ne pas être nécessaire. Je le fais sans vérifier si les images ont des données ou non. juste en train de faire item.images.push (image); c'est assez et ça marche bien. – user644745

Questions connexes