MongoDB
 sql >> Base de Dados >  >> NoSQL >> MongoDB

MeteorJS - Vinculando imagens (FS.collection) ao seu documento relevante na coleção do MongoDB


Este é um caso comum no Meteor/Mongo onde você deseja relacionar duas coleções. Os documentos mongo tenha uma boa redação sobre isso.

Digamos que cada lugar pode ter muitas imagens. Você pode colocar uma referência ao local dentro da imagem ou fazer referência às muitas imagens do local.

Ao criar uma imagem em collectionFS (deixando de fora os detalhes), certifique-se de manter o _id da imagem:
imgId = image.insert();

Se você quiser que a imagem se refira ao local, você pode atualizar a imagem com:
image.update({ _id: imgId },{ $set: { placeId: myPlace._id }});

ou você pode $push imgId em uma matriz de imagens dentro do seu lugar:
Places.update({ _id: myPlace._id },{ $push: { imageArray: imgId }});

A segunda forma de referência é um pouco mais flexível, pois a mesma imagem pode pertencer a vários lugares (muitos-para-muitos). Isso é bom para lugares aninhados, por exemplo, uma imagem da Times Square é uma imagem da Times Square e uma foto de Nova York e assim por diante.

De qualquer forma, você pode participar sua image e Places coleções usando o reywood:publish-composite pacote que é projetado para facilitar a publicação de coleções relacionadas.

Observe também que uma convenção comum para nomear coleções em Meteor é primeira letra maiúscula e forma plural . ou seja, Imagens em vez de imagem . Isso ocorre porque as coleções são variáveis ​​globais no Meteor e uma coleção contém muitas das coisas que o nomeiam.