在Google Cloud中使用DataStore时,我对None
和''
值有疑问。
e.g。
class User(ndb.Model):
age = ndb.IntegerProperty(default=None)
name = ndb.StringProperty(default='')
address = ndb.StringProperty(default=None)
我设置了默认值,因为我想索引并检索其中一个属性没有被赋值的实体列表。
将StringProperty默认值设置为''
或None
的区别是什么?
哪一个更好,为什么?
答案 0 :(得分:3)
从索引角度来看,没有区别:None
和''
都是属性将具有的实际值(而不是根本没有设置的值),因此实体将被索引。另见:Does NDB still index with default=None or properties set to None?
将StringProperty
设置为None
(如果允许),在使用时需要进行其他类型检查,因为它可能包含string
和None
类型值。将其默认值设置为''
将不需要进行此类检查,因为''
是一个字符串 - 因此该属性将始终包含string
值。