我正在使用Meteorjs构建应用程序。我有一个初始化为:
的集合Places=new Mongo.Collection('places');
其中我也想存储相应地方的图像。我已将collectionFS包添加到我的项目中。以下代码为图像创建单独的集合:
image=new FS.Collection("images", {
stores: [new FS.Store.FileSystem("images")]
});
但是,我无法理解我应该如何将这组图像与“地点”中的相关文档相关联。或者只是在我的mongo集合中插入图像。
答案 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软件包加入您的image
和Places
集合,该软件包旨在轻松发布相关集合。
另请注意,在Meteor中命名集合的常见约定是首字母大写和复数形式。即图像而不是图像。这是因为集合是Meteor中的全局变量,而集合中包含许多以其命名的内容。