【问题标题】:How to reference multiple Blobs from one datastore [duplicate]如何从一个数据存储中引用多个 Blob [重复]
【发布时间】:2012-09-13 04:40:38
【问题描述】:

可能重复:
How to model many blobs for an object?

我有一个名为 Location 的数据存储模型,我希望用户能够上传与该位置相关的大量图像。我知道我可以使用 BlobReferenceProperty 从 Blobstore 引用这些图像,但是如何在不创建更多属性的情况下引用大量这些属性?

我可以创建它们的列表或创建 BlobReferenceProperties 的列表属性吗?

【问题讨论】:

    标签: google-app-engine google-cloud-datastore blobstore


    【解决方案1】:

    与任何基本数据存储支持的类型一样,您可以使用ListPropertyBlobKey

    blobRefs = db.ListProperty(blobstore.BlobKey)
    

    请注意:

    1. 列表属性保持顺序。这在某些情况下非常有用。
    2. 整个列表被序列化并存储在实体中。没有办法只获得其中的一部分。
    3. 如果属性被索引,那么每个实体都会在索引中获得它自己的条目(或者如果您为升序和降序编制索引,则为两个)。每个实体最多可以有 5000 个索引条目。
    4. 如果您创建一个具有两个列表属性的复合索引,这将导致exploding indexes

    【讨论】:

    • 嗯,所以完整的属性应该如下所示: List blobRefs = blobstore.BlobReferenceProperty() 因为它告诉我它不能分配给 operator:Compare[left=Name[id=List , ctx=Load, reserved=false], ops=[Lt, Gt], 比较器=[Name[id=BlobReferenceProperty, ctx=Load, reserved=false]
    • 我的错。我没有看到你在使用 python。已更新。
    • 好的,谢谢。我找不到任何文档,但效果很好
    【解决方案2】:

    如果您每个位置可能有超过 5000 张照片,那么这里是另一种选择。

    1. 在数据存储中创建一个位置实体和一个照片实体。照片实体应具有位置实体的引用属性。
    2. 为 blobstore 中的每张照片创建一个数据存储 Photo 对象。
    3. 对于每个 Photo 实体,将 Location 引用属性设置为相应的 Location 对象。

    【讨论】:

      猜你喜欢
      • 2020-09-24
      • 1970-01-01
      • 2014-05-10
      • 2012-05-07
      • 2015-10-02
      • 2020-03-29
      • 2021-06-27
      • 1970-01-01
      • 2023-04-06
      相关资源
      最近更新 更多