我决定在我的游戏中使用谷歌应用引擎。我将使用python数据存储来存储信息。
我需要存储有关每个用户和正在播放的游戏的信息。对于每个用户,我需要存储名称,ID,游戏赢取等。对于每个游戏,我需要存储player1 id,玩家2 id和一些其他游戏相关的字符串。
将游戏信息与用户关联的最佳方式是什么?我应该在用户数据库中拥有game1,game2,game3属性,还是有更有效的方法来执行此操作?
答案 0 :(得分:4)
您可以在数据存储区中拥有“重复”属性,该属性提供值列表。在您的情况下,您可能会这样做:
class Game(ndb.Model);
...
class User(ndb.Model):
games = ndb.KeyProperty(kind=Game, repeated=True)
在您的代码中,myUser.games将是游戏对象的键列表。
或者,如果您的游戏拥有固定数量的玩家,您可以在另一个方向建立关系:
class Game(ndb.Model):
player1 = ndb.KeyProperty(kind=Player)
player2 = ndb.KeyProperty(kind=Player)
然后为了获得玩家的所有游戏,你会查询类似Game.query(player1=myPlayer.key)
的内容(同样适用于玩家2)。