Инкрементный идентификатор (идентификатор) Google App Engine - PullRequest
1 голос
/ 24 ноября 2010

Я создаю программное обеспечение для школы, расположенной в GAE, и мне нужно создать и упорядочить идентификатор для нового ученика при его создании, это не обязательно должен быть «ключ», но нужно увеличить это числопо одному, каждый раз, когда добавляется новый студент, это будет номер студента, напечатанный на школьной карточке.

Используя API низкого уровня , я делаю это:

student = new Entity("student")
student << params.subMap(["name", "birthdate"])
student.save()

Он создает идентификатор, но не увеличивает его на единицу, он является случайным ...

Я также пытался понять KeyRange, но ничего не получил от него.

Некоторая помощь?

Ответы [ 2 ]

1 голос
/ 24 ноября 2010

Вы можете создать Entity с помощью конструктора Entity(String kind, String keyName):

new Entity("student", "" + id);

, пока id уникален для всех студентов.

Чтобы сохранить увеличивающийся счетчик, просто используйте обычную сущность хранилища данных для хранения счетчика. Параллельная защита хранилища данных (транзакций) будет аккуратно обеспечивать последовательную нумерацию объектов. Заштрихованные счетчики не обязательно дадут вам последовательные идентификаторы (спасибо @ Ник Джонсон).

Один из способов получения по имени ключа (из здесь ):

DatastoreService ds = DatastoreServiceFactory.getDatastoreService();
Key key = KeyFactory.createKey("student", "" + id)
Entity entity = ds.get(key);
0 голосов
/ 22 января 2011

Возможно, вы захотите взглянуть на Как реализовать автоинкремент в Google AppEngine , где вы найдете реализацию Python с порядковыми номерами.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...