我正在为GAE托管的学校构建一个软件,我需要在创建时为新学生创建和排序标识符,它实际上不需要是“密钥”,但需要增加这个数字一个,每次添加一个新学生,它将是学校卡上打印的学号。
使用low level API,我这样做:
student = new Entity("student")
student << params.subMap(["name", "birthdate"])
student.save()
它正在创建ID,但它没有增加一个,它有点随机......
我也尝试了解KeyRange,但没有得到任何结果。
一些帮助?
答案 0 :(得分:1)
您可以使用Entity(String kind, String keyName)
构造函数创建Entity
:
new Entity("student", "" + id);
只要id
在所有学生中都是唯一的。
要维持增加的计数器,只需使用普通数据存储区实体来存储计数。数据存储(事务)的并发保护将整齐地确保顺序实体编号。分片计数器不一定会给你连续的ID(感谢@Nick Johnson)。
通过密钥名称获取的一种方法是(来自here):
DatastoreService ds = DatastoreServiceFactory.getDatastoreService();
Key key = KeyFactory.createKey("student", "" + id)
Entity entity = ds.get(key);
答案 1 :(得分:0)
您可能希望查看How to implement "autoincrement" on Google AppEngine,您可以在其中找到序列号的Python实现。