我可以要求DatastoreService
- allocateIdRange(KeyRange range)
- allocateIds(Key parent, java.lang.String kind, long num)
- allocateIds(java.lang.String kind, long num)
答案 0 :(得分:2)
allocateIds()的使用:
您希望使用整数ID在事务中编写多个相互引用的实体。你不会知道" auto id" (即,如果你保留密钥的id /名称,你得到的是什么)直到你提交之后,所以你不能让实体相互指向" (例如,使用引用属性)作为txn的一部分。但是,如果首先分配一些ID,则可以手动将密钥ID设置为您分配的ID,然后在事务中编写相互引用的实体,而不存在与其他自动ID冲突的风险。
您需要人类可读的面向用户的ID,例如用于案例编号。默认的自动ID是大数字(~16位十进制数字),但allocateIds()为您提供旧式"旧式"顺序ID通常会小得多(6或7位)。
如果您要为其分配ID的实体具有祖先,请使用带有父键arg的函数。否则,使用其他allocateIds来指定类型。
至于allocateIdRange(),我建议你不要使用它。它被设计为允许您保留整数id空间的块来进行自己的手动分配,但是在客户端正确管理这是困难且低效的,并且也不再受到良好支持(它将在&上失败) #34;新式"大ids)。