在GAE Ndb数据存储中处理重复属性时,多余的_BaseValue()

时间:2018-10-16 11:56:59

标签: python google-cloud-platform google-cloud-datastore

说我有一个Ndb实体,像这样:

class MyEntity(ndb.Model):
    name = StringProperty()
    tags = StringProperty(repeated=True)

我将创建一个实体:

>>> e = MyEntity(name='test')
>>> e.tags = ['aaa', 'bbb', 'ccc']
>>> e.tags
['aaa', 'bbb', 'ccc']
>>> t = e.tags
>>> t
['aaa', 'bbb', 'ccc']

到现在为止似乎还可以。现在,我将实体放入:

>>> e.put()
>>> t
[_BaseValue('aaa'), _BaseValue('bbb'), _BaseValue('ccc')]

奇怪...

现在,我打印原始属性:

>>> e.tags
['aaa', 'bbb', 'ccc']

已恢复正常。现在是变量t:

>>> t
['aaa', 'bbb', 'ccc']

也很正常...

此问题New entity in repeated StructuredProperty stored as a _BaseValue与之类似。它说这是一个已知的错误。但是由于它是从2014年开始的,所以我希望该错误现在已经修复。

1 个答案:

答案 0 :(得分:0)

实际上,数据存储区属性的“基本值”是一个将被序列化到Cloud Datastore或从其反序列化的值。对于存储,将基值包装在_BaseValue()中,然后调用_store_value()。有关更多详细信息,请参见“ google.appengine.ext.ndb.model的源代码” page。 为确保正确解决此错误,建议您在Public Issue Tracker中打开一个类似的问题,在此肯定可以解决并解决此问题,并且您将可以跟踪开发。