在 Google 云数据存储模型中设置默认值 None 或 '' 有什么区别?
What's the difference to set default value None or '' in Google cloud DataStore models?
当我在 Google Cloud 中使用 DataStore 时,我对 None
和 ''
值有疑问。
例如
class User(ndb.Model):
age = ndb.IntegerProperty(default=None)
name = ndb.StringProperty(default='')
address = ndb.StringProperty(default=None)
我设置默认值是因为我想索引并检索其中一个属性未被赋值的实体列表。
将 StringProperty 默认值设置为 ''
或 None
有什么区别?
哪个更好,为什么?
从索引的角度来看没有区别:None
和 ''
都是 属性 将具有的实际值(与根本未设置的值相反) ),因此实体将被编入索引。另见:Does NDB still index with default=None or properties set to None?
将 StringProperty
设置为 None
(如果允许的话)将需要在使用时进行额外的类型检查,因为它可能同时包含 string
和 None
类型值。将其默认值设置为 ''
将不需要这样的检查,因为 ''
是一个字符串 - 因此 属性 将始终包含 string
值。
当我在 Google Cloud 中使用 DataStore 时,我对 None
和 ''
值有疑问。
例如
class User(ndb.Model):
age = ndb.IntegerProperty(default=None)
name = ndb.StringProperty(default='')
address = ndb.StringProperty(default=None)
我设置默认值是因为我想索引并检索其中一个属性未被赋值的实体列表。
将 StringProperty 默认值设置为 ''
或 None
有什么区别?
哪个更好,为什么?
从索引的角度来看没有区别:None
和 ''
都是 属性 将具有的实际值(与根本未设置的值相反) ),因此实体将被编入索引。另见:Does NDB still index with default=None or properties set to None?
将 StringProperty
设置为 None
(如果允许的话)将需要在使用时进行额外的类型检查,因为它可能同时包含 string
和 None
类型值。将其默认值设置为 ''
将不需要这样的检查,因为 ''
是一个字符串 - 因此 属性 将始终包含 string
值。