0

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

Places=new Mongo.Collection('places');

我还想在其中存储相应位置的图像。我已将 collectionFS 包添加到我的项目中。以下代码为图像创建一个单独的集合:

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

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

4

1 回答 1

1

这是 Meteor/Mongo 中的常见情况,您想要关联两个集合。mongo 文档对此有很好的描述。

假设每个地方可以有很多图像。您可以在图像中引用该地点,也可以引用该地点的许多图像。

当您在 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 中的全局变量,并且集合包含许多以它命名的东西。

于 2015-11-15T22:38:24.357 回答