MeteorJS - 将图像(FS.collection)链接到MongoDB Collection中的相关文档

时间:2015-11-15 20:41:02

标签: mongodb meteor gridfs collectionfs

我正在使用Meteorjs构建应用程序。我有一个初始化为:

的集合
Places=new Mongo.Collection('places');

其中我也想存储相应地方的图像。我已将collectionFS包添加到我的项目中。以下代码为图像创建单独的集合:

image=new FS.Collection("images", {
    stores: [new FS.Store.FileSystem("images")]
});

但是,我无法理解我应该如何将这组图像与“地点”中的相关文档相关联。或者只是在我的mongo集合中插入图像。

1 个答案:

答案 0 :(得分:1)

这是Meteor / Mongo中您想要关联两个集合的常见情况。 mongo docs对此有一个很好的写作。

假设每个地方都有很多图片。您可以在图像中放置对该位置的引用,也可以从该位置引用许多图像。

在collectionFS中创建图像时(省略细节),请务必保留图像的_id

imgId = image.insert();

如果您想让图像引用该地点,则可以使用以下内容更新图像:

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

或者您可以$push imgId到您所在地的一系列图片中:

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

第二种形式的参考形式更灵活,因为同一图像可以属于多个地方(多对多)。这适用于嵌套场所,例如时代广场的图片既是时代广场的图片,也是纽约市的图片,等等。

无论哪种方式,您都可以使用reywood:publish-composite软件包加入您的imagePlaces集合,该软件包旨在轻松发布相关集合。

另请注意,在Meteor中命名集合的常见约定是首字母大写复数形式。即图像而不是图像。这是因为集合是Meteor中的全局变量,而集合中包含许多以其命名的内容。