MongoDB
 sql >> Base de données >  >> NoSQL >> MongoDB

MeteorJS - Lier les images (FS.collection) à leur document pertinent dans la collection MongoDB

C'est un cas courant dans Meteor/Mongo où vous souhaitez relier deux collections. Les mongo docs bonne rédaction à ce sujet.

Disons que chaque lieu peut avoir de nombreuses images. Vous pouvez soit mettre une référence au lieu à l'intérieur de l'image, soit faire référence aux nombreuses images du lieu.

Lorsque vous créez une image dans collectionFS (en omettant les détails), assurez-vous de conserver le _id de l'image :

imgId = image.insert();

Si vous souhaitez que l'image se réfère à l'endroit, vous pouvez alors mettre à jour l'image avec :

image.update({ _id: imgId },{ $set: { placeId: myPlace._id }});

ou vous pouvez $push imgId sur un tableau d'images à l'intérieur de votre lieu :

Places.update({ _id: myPlace._id },{ $push: { imageArray: imgId }});

La deuxième forme de référence est un peu plus flexible dans la mesure où la même image peut appartenir à plusieurs endroits (plusieurs à plusieurs). C'est bon pour les lieux imbriqués, par exemple une photo de Times Square est à la fois une photo de Times Square et une photo de New York City et ainsi de suite.

Dans tous les cas, vous pouvez rejoindre votre image et Places collections utilisant reywood:publish-composite package conçu pour faciliter la publication de collections associées.

Notez également qu'une convention commune pour nommer les collections dans Meteor est la première lettre en majuscule et pluriel . c'est-à-dire Images au lieu de image . C'est parce que les collections sont des variables globales dans Meteor et qu'une collection contient de nombreux éléments qui lui ont donné son nom.