当我使用ndb的put方法创建对象时,它会自动创建Key(kind, id)类型的键,其中id为数字。在整个文档中,它显示您可以使用字符串作为键的ID,但我无法找到如何在创建对象时自动执行此操作。
我有一个User模型,我想使用用户的用户名(因为它是唯一的)作为键的ID以便更快地检索。这是一个好主意吗?由于它是用户提交的(我正在验证输入),所以我会遇到任何用户名的问题吗?
当我使用ndb的put方法创建对象时,它会自动创建Key(kind, id)类型的键,其中id为数字。在整个文档中,它显示您可以使用字符串作为键的ID,但我无法找到如何在创建对象时自动执行此操作。
我有一个User模型,我想使用用户的用户名(因为它是唯一的)作为键的ID以便更快地检索。这是一个好主意吗?由于它是用户提交的(我正在验证输入),所以我会遇到任何用户名的问题吗?
class UserModel(ndb.Model):
...
user_model_entity = UserModel(id='some_string', ...)
如果这些ID可能会发生变化,那么这可能不是一个好主意。如果这是你自己的系统,并且你可以及时处理潜在的变化,那么这是一个好主意,但在决定使用它们之前,你需要确保ID是唯一且相对稳定的。创建实体时需要指定其ID。当您定义模型时,不会在此处设置ID属性。因此,例如:
class User(ndb.Model):
# fields here
创建模型时,你需要:
user = User(id='username', ...)
既然用户名是唯一的,并且您验证了输入,那么您在使用此方法时不会遇到任何问题。
要了解有关ndb Model
构造函数的更多信息,请查看NDB Model Class - Constructor。
希望这可以帮助您。
你也可以为你的模型实体提供整数ID(不一定是字符串)。
class User(ndb.Model):
...
user = User(id=1234567890, ...)
user.put()