NDB Singleton模式
问题描述:
我做在AppEngine上的网上商店,并且我创建一个模型,将持有分贝商店的设置,代码看起来是这样的:NDB Singleton模式
class StoreSettings(ndb.Model):
name = ndb.StringProperty()
homepageTitle = ndb.StringProperty()
metaKeywords = ndb.StringProperty()
metaDescription = ndb.StringProperty()
timezone = ndb.IntegerProperty()
currency = ndb.StringProperty()
是有一个简单的方法可以使StoreSettings类成为单例吗?
谢谢
答
当您初始化您的设置时,您可以提供一个key_name,那么当您必须检索它时,可以使用get_or_insert
方法。如果它不存在,它将创建它,否则它将检索它。
settings_db = StoreSettings.get_or_insert(
'my_settings',
name='yourname'
....
)
或者,如果您创建对象时,应用程序启动,那么你只可以通过键值名
settigns_db = StoreSettings.get_by_id('my_settings')
答
保持相同的密钥?无论何时在数据存储中推送实体,都需要一个密钥。
如果使用相同的密钥创建第二个对象,它最终将覆盖以前的实体。