实体的 属性 可以是 Google Cloud Datastore 中的另一个实体吗?

Can the property of an entity be another entity in Google Cloud Datastore?

这是文档中的内容:

Datastore mode supports a variety of data types for property values. These include, among others:

Integers

Floating-point

numbers

Strings

Dates

Binary data

是否可以将不同类型的实体分配为 Google 云数据存储中另一个实体的 属性?

所以您想将一个实体嵌套在另一个实体中?

python ORM ndb 有一个叫做 属性 类型的东西 ndb.StructuredProperty()

https://cloud.google.com/appengine/docs/standard/python/ndb/entity-property-reference#structured

class Address(ndb.Model):
    type = ndb.StringProperty()  # E.g., 'home', 'work'
    street = ndb.StringProperty()
    city = ndb.StringProperty()

class Contact(ndb.Model):
    name = ndb.StringProperty()
    addresses = ndb.StructuredProperty(Address, repeated=True)

guido = Contact(
    name='Guido',
    addresses=[
        Address(
            type='home',
            city='Amsterdam'),
        Address(
            type='work',
            street='Spear St',
            city='SF')])

但这只是 ORM 所做的把戏。它实际上被存储为:

name = 'Guido'
addresses.type = ['home', 'work']
addresses.city = ['Amsterdam', 'SF']
addresses.street = [None, 'Spear St']

数组是重复实体的存储方式: https://cloud.google.com/appengine/docs/standard/python/ndb/entity-property-reference#repeated

编辑:

所以我刚刚从你的另一个问题中注意到你正在使用 Python3,它使用了这个库 https://googleapis.github.io/google-cloud-python/latest/datastore/index.html

不幸的是,该库 feature-ful 比 ndb 少得多。他们正在努力将 ndb 移植到 python3,但它仍处于 alpha https://github.com/googleapis/python-ndb

但是您仍然可以尝试用 ndb 的方式保存它

from google.cloud import datastore
client = datastore.Client()
key = client.key('Contact', 1234)
entity = datastore.Entity(key=key)
entity.update({
    'name': Guido',
    'addresses.type': ['home', 'work'],
    'addresses.city' = ['Amsterdam', 'SF']
    'addresses.street' = [None, 'Spear St']
})

我唯一不确定的工作是发送重复属性的数组