谷歌App Engine的NDB自定义密钥ID(Google App Engine NDB cust

2019-07-02 13:32发布

当我创建一个对象与NDB的方法把它自动密钥类型(种类,ID),其中id是一个数字的创造的关键。 在所有的文档它表明你可以使用钥匙的ID字符串,但我无法找到一个对象被创建时,如何自动做到这一点。

我有一个用户模式,我想使用的用户的用户名(因为其独特的)为重点的ID为快速的检索。 是,即使是一个好主意吗? 我不会有什么问题的用户名,因为它的用户submited(我验证输入)?

Answer 1:

class UserModel(ndb.Model):
  ...

user_model_entity = UserModel(id='some_string', ...)

如果这些ID有可能发生变化,这可能是一个坏主意。 如果这是你自己的系统,你可以对潜在的变化作出反应,这是一个好主意,但你必须确保标识的决定使用他们之前唯一的,相对稳定。



Answer 2:

您在创建时指定的实体的ID。 当你定义的模型,你不设置id属性那里。 因此,例如您有:

class User(ndb.Model):
    # fields here

当您创建模型,您有:

user = User(id='username', ...)

由于用户名是独一无二的,您验证输入,那么你不会有这种方法的任何问题。

有关的详细信息, ndb Model构造,你可以看看NDB模型类-构造函数 。

希望这可以帮助。



Answer 3:

你也可以为你的模型实体提供整数ID(不一定是字符串)。

class User(ndb.Model):
...

user = User(id=1234567890, ...)
user.put()


文章来源: Google App Engine NDB custom key id