sql >> Base de Datos >  >> NoSQL >> MongoDB

MeteorJS:vinculación de imágenes (FS. collection) a su documento relevante en la colección MongoDB

Este es un caso común en Meteor/Mongo donde desea relacionar dos colecciones. Los mongo docs tenga un buen artículo sobre esto.

Digamos que cada lugar puede tener muchas imágenes. Puedes poner una referencia al lugar dentro de la imagen o referirte a las muchas imágenes del lugar.

Cuando cree una imagen en collectionFS (sin incluir los detalles), asegúrese de mantener el _id de la imagen:

imgId = image.insert();

Si desea que la imagen se refiera al lugar, puede actualizar la imagen con:

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

o puedes $push imgId en una serie de imágenes dentro de su lugar:

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

La segunda forma de referencia es un poco más flexible, ya que la misma imagen puede pertenecer a varios lugares (muchos a muchos). Esto es bueno para lugares anidados, por ejemplo, una imagen de Times Square es a la vez una imagen de Times Square y una imagen de la ciudad de Nueva York y así sucesivamente.

De cualquier forma puedes unirte tu image y Places colecciones usando reywood:publish-composite paquete que está diseñado para facilitar la publicación de colecciones relacionadas.

Tenga en cuenta también que una convención común para nombrar colecciones en Meteor es primera letra en mayúscula y forma plural . es decir, Imágenes en lugar de imagen . Esto se debe a que las colecciones son variables globales en Meteor y una colección contiene muchas de las cosas que le dan nombre.