【问题标题】:MeteorJS - Linking images (FS.collection) to their relevant document in the MongoDB CollectionMeteorJS - 将图像(FS.collection)链接到 MongoDB 集合中的相关文档
【发布时间】:2015-11-15 20:41:01
【问题描述】:

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

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

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

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

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

【问题讨论】:

    标签: mongodb meteor gridfs collectionfs


    【解决方案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 }});
    

    第二种引用形式更加灵活,因为同一张图片可以属于多个位置(多对多)。这适用于嵌套的地方,例如 Times Square 的图片既是 Times Square 的图片又是 纽约市 的图片,并且以此类推。

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

    另请注意,在 Meteor 中命名集合的常见约定是首字母大写复数形式。即 Images 而不是 image。这是因为集合是 Meteor 中的全局变量,并且集合包含许多以它命名的东西。

    【讨论】:

      猜你喜欢
      • 2015-04-20
      • 2019-05-23
      • 1970-01-01
      • 2016-09-22
      • 1970-01-01
      • 2019-11-04
      • 1970-01-01
      • 1970-01-01
      • 2021-08-06
      相关资源
      最近更新 更多